├── .gitignore ├── README.md ├── SECURITY.md ├── blog-admin ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── zoe │ │ │ └── blog │ │ │ ├── BlogAdminApplication.java │ │ │ ├── config │ │ │ ├── CorsConfig.java │ │ │ ├── DruidConfig.java │ │ │ ├── OssConfig.java │ │ │ └── Swagger2Config.java │ │ │ ├── controller │ │ │ ├── admin │ │ │ │ ├── ArticleCategoryRefController.java │ │ │ │ ├── ArticleController.java │ │ │ │ ├── CategoryController.java │ │ │ │ ├── CommentController.java │ │ │ │ ├── LogController.java │ │ │ │ ├── OssController.java │ │ │ │ ├── ReplyController.java │ │ │ │ ├── RoleController.java │ │ │ │ ├── UserController.java │ │ │ │ └── UserRoleRefController.java │ │ │ └── web │ │ │ │ ├── UvController.java │ │ │ │ ├── WebArticleController.java │ │ │ │ ├── WebCategoryController.java │ │ │ │ ├── WebCommentController.java │ │ │ │ ├── WebDataController.java │ │ │ │ └── WebUserDetailController.java │ │ │ ├── dao │ │ │ ├── ArticleCategoryRefDao.java │ │ │ ├── ArticleDao.java │ │ │ ├── CategoryDao.java │ │ │ ├── CommentDao.java │ │ │ ├── LogDao.java │ │ │ ├── LoginUserDao.java │ │ │ ├── ReplyDao.java │ │ │ ├── RoleDao.java │ │ │ ├── UserDao.java │ │ │ ├── UserRoleRefDao.java │ │ │ ├── UvDao.java │ │ │ ├── WebArticleDao.java │ │ │ ├── WebCategoryDao.java │ │ │ └── WebCommentDao.java │ │ │ ├── dto │ │ │ ├── ArticleQueryParam.java │ │ │ ├── AssignCategoryParam.java │ │ │ ├── AssignRoleParam.java │ │ │ ├── CommentEnabledParam.java │ │ │ ├── LogQueryParam.java │ │ │ ├── ModifyPasswordParam.java │ │ │ ├── OssCallbackParam.java │ │ │ ├── OssCallbackResult.java │ │ │ ├── OssPolicyResult.java │ │ │ ├── UvAmountParam.java │ │ │ ├── WebArchiveDto.java │ │ │ └── WebCategoryDto.java │ │ │ ├── exception │ │ │ ├── GlobalException.java │ │ │ └── RestApiException.java │ │ │ ├── model │ │ │ ├── Article.java │ │ │ ├── ArticleCategoryRef.java │ │ │ ├── Category.java │ │ │ ├── Comment.java │ │ │ ├── Log.java │ │ │ ├── LoginUser.java │ │ │ ├── Reply.java │ │ │ ├── Role.java │ │ │ ├── User.java │ │ │ ├── UserRoleRef.java │ │ │ └── Uv.java │ │ │ ├── scheduled │ │ │ └── UvScheduled.java │ │ │ ├── security │ │ │ ├── JWTAuthenticationFliter.java │ │ │ ├── LoginAuthenticationFilter.java │ │ │ ├── RestAccessDeniedHandler.java │ │ │ ├── RestAuthenticationEntryPoint.java │ │ │ ├── RestLogoutSuccessHandler.java │ │ │ └── SecurityConfig.java │ │ │ ├── service │ │ │ ├── ArticleCategoryRefService.java │ │ │ ├── ArticleService.java │ │ │ ├── CategoryService.java │ │ │ ├── CommentService.java │ │ │ ├── LogService.java │ │ │ ├── LoginUserService.java │ │ │ ├── OssService.java │ │ │ ├── ReplyService.java │ │ │ ├── RoleService.java │ │ │ ├── UserRoleRefService.java │ │ │ ├── UserService.java │ │ │ ├── UvService.java │ │ │ ├── WebArticleService.java │ │ │ ├── WebCategoryService.java │ │ │ ├── WebCommentService.java │ │ │ ├── WebDataService.java │ │ │ └── WebUserDetailService.java │ │ │ └── utils │ │ │ ├── CommonPage.java │ │ │ ├── CommonResult.java │ │ │ ├── IPUtil.java │ │ │ ├── LogUtil.java │ │ │ ├── RestBCryptPasswordEncoder.java │ │ │ └── ResultCode.java │ └── resources │ │ ├── application-dev.yml │ │ ├── application.yml │ │ ├── log4j.properties │ │ └── mapper │ │ ├── ArticleCategoryRefMapper.xml │ │ ├── ArticleMapper.xml │ │ ├── CategoryMapper.xml │ │ ├── CommentMapper.xml │ │ ├── LogMapper.xml │ │ ├── LoginUserMapper.xml │ │ ├── ReplyMapper.xml │ │ ├── RoleMapper.xml │ │ ├── UserMapper.xml │ │ ├── UserRoleRefMapper.xml │ │ ├── UvMapper.xml │ │ ├── WebArticleMapper.xml │ │ ├── WebCategoryMapper.xml │ │ └── WebCommentMapper.xml │ └── test │ └── java │ └── com │ └── zoe │ └── blog │ └── BlogAdminApplicationTests.java ├── blog-web ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ └── index.html ├── src │ ├── App.vue │ ├── api │ │ ├── article.js │ │ ├── comment.js │ │ └── user.js │ ├── assets │ │ ├── logo.png │ │ └── null.png │ ├── main.js │ ├── plugins │ │ └── ant-design-vue.js │ ├── router │ │ └── index.js │ ├── store │ │ └── index.js │ ├── styles │ │ ├── github-markdown.scss │ │ ├── index.scss │ │ └── reset.scss │ ├── utils │ │ ├── date.js │ │ ├── escapeStringAndHtml.js │ │ └── request.js │ └── views │ │ ├── article │ │ ├── components │ │ │ ├── Content.vue │ │ │ └── Header.vue │ │ └── index.vue │ │ ├── articleDetail │ │ └── index.vue │ │ └── home │ │ ├── components │ │ ├── Content.vue │ │ ├── Header.vue │ │ └── Sider.vue │ │ └── index.vue └── vue.config.js ├── blog.sql └── vblog ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .prettierrc ├── README.md ├── babel.config.js ├── package-lock.json ├── package.json ├── public ├── favicon.ico └── index.html ├── src ├── App.vue ├── api │ ├── article.js │ ├── articleCategoryRef.js │ ├── category.js │ ├── comment.js │ ├── data.js │ ├── log.js │ ├── login.js │ ├── oss.js │ ├── reply.js │ ├── role.js │ ├── user.js │ ├── userRoleRef.js │ └── uv.js ├── assets │ ├── logo.png │ ├── null.png │ └── write.png ├── main.js ├── plugins │ └── ant-design-vue.js ├── router │ └── index.js ├── store │ ├── getters.js │ ├── index.js │ └── modules │ │ └── user.js ├── styles │ ├── index.scss │ └── reset.scss ├── utils │ ├── auth.js │ ├── date.js │ ├── escapeStringAndHtml.js │ ├── request.js │ └── support.js └── views │ ├── article │ └── index.vue │ ├── category │ └── index.vue │ ├── comment │ └── index.vue │ ├── errors │ ├── 403.vue │ └── 404.vue │ ├── home │ ├── components │ │ ├── AreaGraph.vue │ │ ├── NewestComment.vue │ │ └── RadarGraph.vue │ └── index.vue │ ├── layout │ ├── Layout.vue │ └── components │ │ ├── Content.vue │ │ ├── Footer.vue │ │ ├── Header.vue │ │ └── Sider.vue │ ├── log │ └── index.vue │ ├── login │ └── index.vue │ ├── security │ ├── role │ │ └── index.vue │ └── user │ │ └── index.vue │ ├── setting │ └── index.vue │ └── write │ └── index.vue ├── static └── editormd │ ├── .gitignore │ ├── .jshintrc │ ├── BUGS.md │ ├── CHANGE.md │ ├── Gulpfile.js │ ├── LICENSE │ ├── README.md │ ├── bower.json │ ├── css │ ├── color-themes-for-google-code-prettify-master │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE.md │ │ ├── README.md │ │ ├── bower.json │ │ ├── dist │ │ │ ├── themes.zip │ │ │ └── themes │ │ │ │ ├── atelier-cave-dark.css │ │ │ │ ├── atelier-cave-dark.min.css │ │ │ │ ├── atelier-cave-light.css │ │ │ │ ├── atelier-cave-light.min.css │ │ │ │ ├── atelier-dune-dark.css │ │ │ │ ├── atelier-dune-dark.min.css │ │ │ │ ├── atelier-dune-light.css │ │ │ │ ├── atelier-dune-light.min.css │ │ │ │ ├── atelier-estuary-dark.css │ │ │ │ ├── atelier-estuary-dark.min.css │ │ │ │ ├── atelier-estuary-light.css │ │ │ │ ├── atelier-estuary-light.min.css │ │ │ │ ├── atelier-forest-dark.css │ │ │ │ ├── atelier-forest-dark.min.css │ │ │ │ ├── atelier-forest-light.css │ │ │ │ ├── atelier-forest-light.min.css │ │ │ │ ├── atelier-heath-dark.css │ │ │ │ ├── atelier-heath-dark.min.css │ │ │ │ ├── atelier-heath-light.css │ │ │ │ ├── atelier-heath-light.min.css │ │ │ │ ├── atelier-lakeside-dark.css │ │ │ │ ├── atelier-lakeside-dark.min.css │ │ │ │ ├── atelier-lakeside-light.css │ │ │ │ ├── atelier-lakeside-light.min.css │ │ │ │ ├── atelier-plateau-dark.css │ │ │ │ ├── atelier-plateau-dark.min.css │ │ │ │ ├── atelier-plateau-light.css │ │ │ │ ├── atelier-plateau-light.min.css │ │ │ │ ├── atelier-savanna-dark.css │ │ │ │ ├── atelier-savanna-dark.min.css │ │ │ │ ├── atelier-savanna-light.css │ │ │ │ ├── atelier-savanna-light.min.css │ │ │ │ ├── atelier-seaside-dark.css │ │ │ │ ├── atelier-seaside-dark.min.css │ │ │ │ ├── atelier-seaside-light.css │ │ │ │ ├── atelier-seaside-light.min.css │ │ │ │ ├── atelier-sulphurpool-dark.css │ │ │ │ ├── atelier-sulphurpool-dark.min.css │ │ │ │ ├── atelier-sulphurpool-light.css │ │ │ │ ├── atelier-sulphurpool-light.min.css │ │ │ │ ├── github-v2.css │ │ │ │ ├── github-v2.min.css │ │ │ │ ├── github.css │ │ │ │ ├── github.min.css │ │ │ │ ├── hemisu-dark.css │ │ │ │ ├── hemisu-dark.min.css │ │ │ │ ├── hemisu-light.css │ │ │ │ ├── hemisu-light.min.css │ │ │ │ ├── tomorrow-night-blue.css │ │ │ │ ├── tomorrow-night-blue.min.css │ │ │ │ ├── tomorrow-night-bright.css │ │ │ │ ├── tomorrow-night-bright.min.css │ │ │ │ ├── tomorrow-night-eighties.css │ │ │ │ ├── tomorrow-night-eighties.min.css │ │ │ │ ├── tomorrow-night.css │ │ │ │ ├── tomorrow-night.min.css │ │ │ │ ├── tomorrow.css │ │ │ │ ├── tomorrow.min.css │ │ │ │ ├── tranquil-heart.css │ │ │ │ ├── tranquil-heart.min.css │ │ │ │ ├── vibrant-ink.css │ │ │ │ └── vibrant-ink.min.css │ │ ├── gulpfile.js │ │ ├── package.json │ │ └── src │ │ │ ├── index.jade │ │ │ ├── scripts │ │ │ └── scripts.js │ │ │ ├── sitemap.xml │ │ │ ├── styles │ │ │ ├── base │ │ │ │ ├── _headings.scss │ │ │ │ ├── _links.scss │ │ │ │ ├── _page.scss │ │ │ │ ├── _paragraphs.scss │ │ │ │ └── _typography.scss │ │ │ ├── components │ │ │ │ ├── _button.scss │ │ │ │ ├── _cover.scss │ │ │ │ ├── _getting-started.scss │ │ │ │ ├── _list.scss │ │ │ │ ├── _segment.scss │ │ │ │ ├── _tabs.scss │ │ │ │ ├── _theme.scss │ │ │ │ └── octicons │ │ │ │ │ ├── LICENSE.txt │ │ │ │ │ ├── README.md │ │ │ │ │ ├── _octicons.scss │ │ │ │ │ ├── octicons.eot │ │ │ │ │ ├── octicons.svg │ │ │ │ │ ├── octicons.ttf │ │ │ │ │ └── octicons.woff │ │ │ ├── generic │ │ │ │ ├── _normalize.css │ │ │ │ └── _reboot.scss │ │ │ ├── main.scss │ │ │ ├── objects │ │ │ │ └── _container.scss │ │ │ ├── settings │ │ │ │ ├── _colors.scss │ │ │ │ └── _variables.scss │ │ │ ├── theme-previews │ │ │ │ ├── atelier-cave-dark.scss │ │ │ │ ├── atelier-cave-light.scss │ │ │ │ ├── atelier-dune-dark.scss │ │ │ │ ├── atelier-dune-light.scss │ │ │ │ ├── atelier-estuary-dark.scss │ │ │ │ ├── atelier-estuary-light.scss │ │ │ │ ├── atelier-forest-dark.scss │ │ │ │ ├── atelier-forest-light.scss │ │ │ │ ├── atelier-heath-dark.scss │ │ │ │ ├── atelier-heath-light.scss │ │ │ │ ├── atelier-lakeside-dark.scss │ │ │ │ ├── atelier-lakeside-light.scss │ │ │ │ ├── atelier-plateau-dark.scss │ │ │ │ ├── atelier-plateau-light.scss │ │ │ │ ├── atelier-savanna-dark.scss │ │ │ │ ├── atelier-savanna-light.scss │ │ │ │ ├── atelier-seaside-dark.scss │ │ │ │ ├── atelier-seaside-light.scss │ │ │ │ ├── atelier-sulphurpool-dark.scss │ │ │ │ ├── atelier-sulphurpool-light.scss │ │ │ │ ├── github-v2.scss │ │ │ │ ├── github.scss │ │ │ │ ├── hemisu-dark.scss │ │ │ │ ├── hemisu-light.scss │ │ │ │ ├── tomorrow-night-blue.scss │ │ │ │ ├── tomorrow-night-bright.scss │ │ │ │ ├── tomorrow-night-eighties.scss │ │ │ │ ├── tomorrow-night.scss │ │ │ │ ├── tomorrow.scss │ │ │ │ ├── tranquil-heart.scss │ │ │ │ └── vibrant-ink.scss │ │ │ ├── tools │ │ │ │ └── _breakpoints.scss │ │ │ └── trumps │ │ │ │ ├── _animation.scss │ │ │ │ └── _text.scss │ │ │ ├── themes.json │ │ │ └── themes │ │ │ ├── _base-hemisu.scss │ │ │ ├── _base-tomorrow.scss │ │ │ ├── _base.scss │ │ │ ├── atelier-cave-dark.scss │ │ │ ├── atelier-cave-light.scss │ │ │ ├── atelier-dune-dark.scss │ │ │ ├── atelier-dune-light.scss │ │ │ ├── atelier-estuary-dark.scss │ │ │ ├── atelier-estuary-light.scss │ │ │ ├── atelier-forest-dark.scss │ │ │ ├── atelier-forest-light.scss │ │ │ ├── atelier-heath-dark.scss │ │ │ ├── atelier-heath-light.scss │ │ │ ├── atelier-lakeside-dark.scss │ │ │ ├── atelier-lakeside-light.scss │ │ │ ├── atelier-plateau-dark.scss │ │ │ ├── atelier-plateau-light.scss │ │ │ ├── atelier-savanna-dark.scss │ │ │ ├── atelier-savanna-light.scss │ │ │ ├── atelier-seaside-dark.scss │ │ │ ├── atelier-seaside-light.scss │ │ │ ├── atelier-sulphurpool-dark.scss │ │ │ ├── atelier-sulphurpool-light.scss │ │ │ ├── colors │ │ │ ├── _atelier-cave-dark.scss │ │ │ ├── _atelier-cave-light.scss │ │ │ ├── _atelier-dune-dark.scss │ │ │ ├── _atelier-dune-light.scss │ │ │ ├── _atelier-estuary-dark.scss │ │ │ ├── _atelier-estuary-light.scss │ │ │ ├── _atelier-forest-dark.scss │ │ │ ├── _atelier-forest-light.scss │ │ │ ├── _atelier-heath-dark.scss │ │ │ ├── _atelier-heath-light.scss │ │ │ ├── _atelier-lakeside-dark.scss │ │ │ ├── _atelier-lakeside-light.scss │ │ │ ├── _atelier-plateau-dark.scss │ │ │ ├── _atelier-plateau-light.scss │ │ │ ├── _atelier-savanna-dark.scss │ │ │ ├── _atelier-savanna-light.scss │ │ │ ├── _atelier-seaside-dark.scss │ │ │ ├── _atelier-seaside-light.scss │ │ │ ├── _atelier-sulphurpool-dark.scss │ │ │ ├── _atelier-sulphurpool-light.scss │ │ │ ├── _github-v2.scss │ │ │ ├── _github.scss │ │ │ ├── _hemisu-dark.scss │ │ │ ├── _hemisu-light.scss │ │ │ ├── _hemisu.scss │ │ │ ├── _tomorrow-night-blue.scss │ │ │ ├── _tomorrow-night-bright.scss │ │ │ ├── _tomorrow-night-eighties.scss │ │ │ ├── _tomorrow-night.scss │ │ │ ├── _tomorrow.scss │ │ │ ├── _tranquil-heart.scss │ │ │ └── _vibrant-ink.scss │ │ │ ├── github-v2.scss │ │ │ ├── github.scss │ │ │ ├── hemisu-dark.scss │ │ │ ├── hemisu-light.scss │ │ │ ├── tomorrow-night-blue.scss │ │ │ ├── tomorrow-night-bright.scss │ │ │ ├── tomorrow-night-eighties.scss │ │ │ ├── tomorrow-night.scss │ │ │ ├── tomorrow.scss │ │ │ ├── tranquil-heart.scss │ │ │ └── vibrant-ink.scss │ ├── editormd.css │ ├── editormd.logo.css │ ├── editormd.logo.min.css │ ├── editormd.min.css │ ├── editormd.preview.css │ └── editormd.preview.min.css │ ├── docs │ ├── editormd.js.html │ ├── fonts │ │ ├── OpenSans-Bold-webfont.eot │ │ ├── OpenSans-Bold-webfont.svg │ │ ├── OpenSans-Bold-webfont.woff │ │ ├── OpenSans-BoldItalic-webfont.eot │ │ ├── OpenSans-BoldItalic-webfont.svg │ │ ├── OpenSans-BoldItalic-webfont.woff │ │ ├── OpenSans-Italic-webfont.eot │ │ ├── OpenSans-Italic-webfont.svg │ │ ├── OpenSans-Italic-webfont.woff │ │ ├── OpenSans-Light-webfont.eot │ │ ├── OpenSans-Light-webfont.svg │ │ ├── OpenSans-Light-webfont.woff │ │ ├── OpenSans-LightItalic-webfont.eot │ │ ├── OpenSans-LightItalic-webfont.svg │ │ ├── OpenSans-LightItalic-webfont.woff │ │ ├── OpenSans-Regular-webfont.eot │ │ ├── OpenSans-Regular-webfont.svg │ │ └── OpenSans-Regular-webfont.woff │ ├── index.html │ ├── scripts │ │ ├── linenumber.js │ │ └── prettify │ │ │ ├── Apache-License-2.0.txt │ │ │ ├── lang-css.js │ │ │ └── prettify.js │ └── styles │ │ ├── jsdoc-default.css │ │ ├── prettify-jsdoc.css │ │ └── prettify-tomorrow.css │ ├── editormd.amd.js │ ├── editormd.amd.min.js │ ├── editormd.js │ ├── editormd.min.js │ ├── examples │ ├── @links.html │ ├── auto-height.html │ ├── change-mode.html │ ├── code-fold.html │ ├── css │ │ └── style.css │ ├── custom-keyboard-shortcuts.html │ ├── custom-toolbar.html │ ├── define-plugin.html │ ├── delay-renderer-preview.html │ ├── dynamic-create-editormd.html │ ├── emoji.html │ ├── extends.html │ ├── external-use.html │ ├── flowchart.html │ ├── form-get-value.html │ ├── full.html │ ├── goto-line.html │ ├── html-preview-markdown-to-html-custom-toc-container.html │ ├── html-preview-markdown-to-html.html │ ├── html-tags-decode.html │ ├── image-cross-domain-upload.html │ ├── image-upload.html │ ├── images │ │ ├── 4.jpg │ │ ├── 7.jpg │ │ ├── 8.jpg │ │ └── editormd-screenshot.png │ ├── index.html │ ├── js │ │ ├── jquery.min.js │ │ ├── require.min.js │ │ ├── sea.js │ │ ├── seajs-main.js │ │ └── zepto.min.js │ ├── katex.html │ ├── manually-load-modules.html │ ├── multi-editormd.html │ ├── multi-languages.html │ ├── on-off.html │ ├── onchange.html │ ├── onfullscreen.html │ ├── onload.html │ ├── onpreviewing-onpreviewed.html │ ├── onresize.html │ ├── onscroll-onpreviewscroll.html │ ├── onwatch-onunwatch.html │ ├── page-break.html │ ├── php │ │ ├── cross-domain-upload.php │ │ ├── editormd.uploader.class.php │ │ ├── post.php │ │ ├── upload.php │ │ └── upload_callback.html │ ├── readonly.html │ ├── resettings.html │ ├── search-replace.html │ ├── sequence-diagram.html │ ├── set-get-replace-selection.html │ ├── simple.html │ ├── sync-scrolling.html │ ├── task-lists.html │ ├── test.md │ ├── themes.html │ ├── toc.html │ ├── toolbar-auto-fixed.html │ ├── use-requirejs.html │ ├── use-seajs.html │ └── use-zepto.html │ ├── fonts │ ├── FontAwesome.otf │ ├── editormd-logo.eot │ ├── editormd-logo.svg │ ├── editormd-logo.ttf │ ├── editormd-logo.woff │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ └── fontawesome-webfont.woff2 │ ├── images │ ├── loading.gif │ ├── loading@2x.gif │ ├── loading@3x.gif │ └── logos │ │ ├── editormd-favicon-16x16.ico │ │ ├── editormd-favicon-24x24.ico │ │ ├── editormd-favicon-32x32.ico │ │ ├── editormd-favicon-48x48.ico │ │ ├── editormd-favicon-64x64.ico │ │ ├── editormd-logo-114x114.png │ │ ├── editormd-logo-120x120.png │ │ ├── editormd-logo-144x144.png │ │ ├── editormd-logo-16x16.png │ │ ├── editormd-logo-180x180.png │ │ ├── editormd-logo-240x240.png │ │ ├── editormd-logo-24x24.png │ │ ├── editormd-logo-320x320.png │ │ ├── editormd-logo-32x32.png │ │ ├── editormd-logo-48x48.png │ │ ├── editormd-logo-57x57.png │ │ ├── editormd-logo-64x64.png │ │ ├── editormd-logo-72x72.png │ │ ├── editormd-logo-96x96.png │ │ └── vi.png │ ├── jquery-3.5.1.js │ ├── languages │ ├── en.js │ └── zh-tw.js │ ├── lib │ ├── codemirror │ │ ├── AUTHORS │ │ ├── LICENSE │ │ ├── README.md │ │ ├── addon │ │ │ ├── comment │ │ │ │ ├── comment.js │ │ │ │ └── continuecomment.js │ │ │ ├── dialog │ │ │ │ ├── dialog.css │ │ │ │ └── dialog.js │ │ │ ├── display │ │ │ │ ├── fullscreen.css │ │ │ │ ├── fullscreen.js │ │ │ │ ├── panel.js │ │ │ │ ├── placeholder.js │ │ │ │ └── rulers.js │ │ │ ├── edit │ │ │ │ ├── closebrackets.js │ │ │ │ ├── closetag.js │ │ │ │ ├── continuelist.js │ │ │ │ ├── matchbrackets.js │ │ │ │ ├── matchtags.js │ │ │ │ └── trailingspace.js │ │ │ ├── fold │ │ │ │ ├── brace-fold.js │ │ │ │ ├── comment-fold.js │ │ │ │ ├── foldcode.js │ │ │ │ ├── foldgutter.css │ │ │ │ ├── foldgutter.js │ │ │ │ ├── indent-fold.js │ │ │ │ ├── markdown-fold.js │ │ │ │ └── xml-fold.js │ │ │ ├── hint │ │ │ │ ├── anyword-hint.js │ │ │ │ ├── css-hint.js │ │ │ │ ├── html-hint.js │ │ │ │ ├── javascript-hint.js │ │ │ │ ├── show-hint.css │ │ │ │ ├── show-hint.js │ │ │ │ ├── sql-hint.js │ │ │ │ └── xml-hint.js │ │ │ ├── lint │ │ │ │ ├── coffeescript-lint.js │ │ │ │ ├── css-lint.js │ │ │ │ ├── javascript-lint.js │ │ │ │ ├── json-lint.js │ │ │ │ ├── lint.css │ │ │ │ ├── lint.js │ │ │ │ └── yaml-lint.js │ │ │ ├── merge │ │ │ │ ├── merge.css │ │ │ │ └── merge.js │ │ │ ├── mode │ │ │ │ ├── loadmode.js │ │ │ │ ├── multiplex.js │ │ │ │ ├── multiplex_test.js │ │ │ │ ├── overlay.js │ │ │ │ └── simple.js │ │ │ ├── runmode │ │ │ │ ├── colorize.js │ │ │ │ ├── runmode-standalone.js │ │ │ │ ├── runmode.js │ │ │ │ └── runmode.node.js │ │ │ ├── scroll │ │ │ │ ├── annotatescrollbar.js │ │ │ │ ├── scrollpastend.js │ │ │ │ ├── simplescrollbars.css │ │ │ │ └── simplescrollbars.js │ │ │ ├── search │ │ │ │ ├── match-highlighter.js │ │ │ │ ├── matchesonscrollbar.css │ │ │ │ ├── matchesonscrollbar.js │ │ │ │ ├── search.js │ │ │ │ └── searchcursor.js │ │ │ ├── selection │ │ │ │ ├── active-line.js │ │ │ │ ├── mark-selection.js │ │ │ │ └── selection-pointer.js │ │ │ ├── tern │ │ │ │ ├── tern.css │ │ │ │ ├── tern.js │ │ │ │ └── worker.js │ │ │ └── wrap │ │ │ │ └── hardwrap.js │ │ ├── addons.min.js │ │ ├── bower.json │ │ ├── codemirror.min.css │ │ ├── codemirror.min.js │ │ ├── lib │ │ │ ├── codemirror.css │ │ │ └── codemirror.js │ │ ├── mode │ │ │ ├── apl │ │ │ │ ├── apl.js │ │ │ │ └── index.html │ │ │ ├── asterisk │ │ │ │ ├── asterisk.js │ │ │ │ └── index.html │ │ │ ├── clike │ │ │ │ ├── clike.js │ │ │ │ ├── index.html │ │ │ │ └── scala.html │ │ │ ├── clojure │ │ │ │ ├── clojure.js │ │ │ │ └── index.html │ │ │ ├── cobol │ │ │ │ ├── cobol.js │ │ │ │ └── index.html │ │ │ ├── coffeescript │ │ │ │ ├── coffeescript.js │ │ │ │ └── index.html │ │ │ ├── commonlisp │ │ │ │ ├── commonlisp.js │ │ │ │ └── index.html │ │ │ ├── css │ │ │ │ ├── css.js │ │ │ │ ├── index.html │ │ │ │ ├── less.html │ │ │ │ ├── less_test.js │ │ │ │ ├── scss.html │ │ │ │ ├── scss_test.js │ │ │ │ └── test.js │ │ │ ├── cypher │ │ │ │ ├── cypher.js │ │ │ │ └── index.html │ │ │ ├── d │ │ │ │ ├── d.js │ │ │ │ └── index.html │ │ │ ├── dart │ │ │ │ ├── dart.js │ │ │ │ └── index.html │ │ │ ├── diff │ │ │ │ ├── diff.js │ │ │ │ └── index.html │ │ │ ├── django │ │ │ │ ├── django.js │ │ │ │ └── index.html │ │ │ ├── dockerfile │ │ │ │ ├── dockerfile.js │ │ │ │ └── index.html │ │ │ ├── dtd │ │ │ │ ├── dtd.js │ │ │ │ └── index.html │ │ │ ├── dylan │ │ │ │ ├── dylan.js │ │ │ │ └── index.html │ │ │ ├── ebnf │ │ │ │ ├── ebnf.js │ │ │ │ └── index.html │ │ │ ├── ecl │ │ │ │ ├── ecl.js │ │ │ │ └── index.html │ │ │ ├── eiffel │ │ │ │ ├── eiffel.js │ │ │ │ └── index.html │ │ │ ├── erlang │ │ │ │ ├── erlang.js │ │ │ │ └── index.html │ │ │ ├── forth │ │ │ │ ├── forth.js │ │ │ │ └── index.html │ │ │ ├── fortran │ │ │ │ ├── fortran.js │ │ │ │ └── index.html │ │ │ ├── gas │ │ │ │ ├── gas.js │ │ │ │ └── index.html │ │ │ ├── gfm │ │ │ │ ├── gfm.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ ├── gherkin │ │ │ │ ├── gherkin.js │ │ │ │ └── index.html │ │ │ ├── go │ │ │ │ ├── go.js │ │ │ │ └── index.html │ │ │ ├── groovy │ │ │ │ ├── groovy.js │ │ │ │ └── index.html │ │ │ ├── haml │ │ │ │ ├── haml.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ ├── haskell │ │ │ │ ├── haskell.js │ │ │ │ └── index.html │ │ │ ├── haxe │ │ │ │ ├── haxe.js │ │ │ │ └── index.html │ │ │ ├── htmlembedded │ │ │ │ ├── htmlembedded.js │ │ │ │ └── index.html │ │ │ ├── htmlmixed │ │ │ │ ├── htmlmixed.js │ │ │ │ └── index.html │ │ │ ├── http │ │ │ │ ├── http.js │ │ │ │ └── index.html │ │ │ ├── idl │ │ │ │ ├── idl.js │ │ │ │ └── index.html │ │ │ ├── index.html │ │ │ ├── jade │ │ │ │ ├── index.html │ │ │ │ └── jade.js │ │ │ ├── javascript │ │ │ │ ├── index.html │ │ │ │ ├── javascript.js │ │ │ │ ├── json-ld.html │ │ │ │ ├── test.js │ │ │ │ └── typescript.html │ │ │ ├── jinja2 │ │ │ │ ├── index.html │ │ │ │ └── jinja2.js │ │ │ ├── julia │ │ │ │ ├── index.html │ │ │ │ └── julia.js │ │ │ ├── kotlin │ │ │ │ ├── index.html │ │ │ │ └── kotlin.js │ │ │ ├── livescript │ │ │ │ ├── index.html │ │ │ │ └── livescript.js │ │ │ ├── lua │ │ │ │ ├── index.html │ │ │ │ └── lua.js │ │ │ ├── markdown │ │ │ │ ├── index.html │ │ │ │ ├── markdown.js │ │ │ │ └── test.js │ │ │ ├── meta.js │ │ │ ├── mirc │ │ │ │ ├── index.html │ │ │ │ └── mirc.js │ │ │ ├── mllike │ │ │ │ ├── index.html │ │ │ │ └── mllike.js │ │ │ ├── modelica │ │ │ │ ├── index.html │ │ │ │ └── modelica.js │ │ │ ├── nginx │ │ │ │ ├── index.html │ │ │ │ └── nginx.js │ │ │ ├── ntriples │ │ │ │ ├── index.html │ │ │ │ └── ntriples.js │ │ │ ├── octave │ │ │ │ ├── index.html │ │ │ │ └── octave.js │ │ │ ├── pascal │ │ │ │ ├── index.html │ │ │ │ └── pascal.js │ │ │ ├── pegjs │ │ │ │ ├── index.html │ │ │ │ └── pegjs.js │ │ │ ├── perl │ │ │ │ ├── index.html │ │ │ │ └── perl.js │ │ │ ├── php │ │ │ │ ├── index.html │ │ │ │ ├── php.js │ │ │ │ └── test.js │ │ │ ├── pig │ │ │ │ ├── index.html │ │ │ │ └── pig.js │ │ │ ├── properties │ │ │ │ ├── index.html │ │ │ │ └── properties.js │ │ │ ├── puppet │ │ │ │ ├── index.html │ │ │ │ └── puppet.js │ │ │ ├── python │ │ │ │ ├── index.html │ │ │ │ └── python.js │ │ │ ├── q │ │ │ │ ├── index.html │ │ │ │ └── q.js │ │ │ ├── r │ │ │ │ ├── index.html │ │ │ │ └── r.js │ │ │ ├── rpm │ │ │ │ ├── changes │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ └── rpm.js │ │ │ ├── rst │ │ │ │ ├── index.html │ │ │ │ └── rst.js │ │ │ ├── ruby │ │ │ │ ├── index.html │ │ │ │ ├── ruby.js │ │ │ │ └── test.js │ │ │ ├── rust │ │ │ │ ├── index.html │ │ │ │ └── rust.js │ │ │ ├── sass │ │ │ │ ├── index.html │ │ │ │ └── sass.js │ │ │ ├── scheme │ │ │ │ ├── index.html │ │ │ │ └── scheme.js │ │ │ ├── shell │ │ │ │ ├── index.html │ │ │ │ ├── shell.js │ │ │ │ └── test.js │ │ │ ├── sieve │ │ │ │ ├── index.html │ │ │ │ └── sieve.js │ │ │ ├── slim │ │ │ │ ├── index.html │ │ │ │ ├── slim.js │ │ │ │ └── test.js │ │ │ ├── smalltalk │ │ │ │ ├── index.html │ │ │ │ └── smalltalk.js │ │ │ ├── smarty │ │ │ │ ├── index.html │ │ │ │ └── smarty.js │ │ │ ├── smartymixed │ │ │ │ ├── index.html │ │ │ │ └── smartymixed.js │ │ │ ├── solr │ │ │ │ ├── index.html │ │ │ │ └── solr.js │ │ │ ├── soy │ │ │ │ ├── index.html │ │ │ │ └── soy.js │ │ │ ├── sparql │ │ │ │ ├── index.html │ │ │ │ └── sparql.js │ │ │ ├── spreadsheet │ │ │ │ ├── index.html │ │ │ │ └── spreadsheet.js │ │ │ ├── sql │ │ │ │ ├── index.html │ │ │ │ └── sql.js │ │ │ ├── stex │ │ │ │ ├── index.html │ │ │ │ ├── stex.js │ │ │ │ └── test.js │ │ │ ├── stylus │ │ │ │ ├── index.html │ │ │ │ └── stylus.js │ │ │ ├── tcl │ │ │ │ ├── index.html │ │ │ │ └── tcl.js │ │ │ ├── textile │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── textile.js │ │ │ ├── tiddlywiki │ │ │ │ ├── index.html │ │ │ │ ├── tiddlywiki.css │ │ │ │ └── tiddlywiki.js │ │ │ ├── tiki │ │ │ │ ├── index.html │ │ │ │ ├── tiki.css │ │ │ │ └── tiki.js │ │ │ ├── toml │ │ │ │ ├── index.html │ │ │ │ └── toml.js │ │ │ ├── tornado │ │ │ │ ├── index.html │ │ │ │ └── tornado.js │ │ │ ├── turtle │ │ │ │ ├── index.html │ │ │ │ └── turtle.js │ │ │ ├── vb │ │ │ │ ├── index.html │ │ │ │ └── vb.js │ │ │ ├── vbscript │ │ │ │ ├── index.html │ │ │ │ └── vbscript.js │ │ │ ├── velocity │ │ │ │ ├── index.html │ │ │ │ └── velocity.js │ │ │ ├── verilog │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── verilog.js │ │ │ ├── xml │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── xml.js │ │ │ ├── xquery │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── xquery.js │ │ │ ├── yaml │ │ │ │ ├── index.html │ │ │ │ └── yaml.js │ │ │ └── z80 │ │ │ │ ├── index.html │ │ │ │ └── z80.js │ │ ├── modes.min.js │ │ ├── package.json │ │ └── theme │ │ │ ├── 3024-day.css │ │ │ ├── 3024-night.css │ │ │ ├── ambiance-mobile.css │ │ │ ├── ambiance.css │ │ │ ├── base16-dark.css │ │ │ ├── base16-light.css │ │ │ ├── blackboard.css │ │ │ ├── cobalt.css │ │ │ ├── colorforth.css │ │ │ ├── eclipse.css │ │ │ ├── elegant.css │ │ │ ├── erlang-dark.css │ │ │ ├── lesser-dark.css │ │ │ ├── mbo.css │ │ │ ├── mdn-like.css │ │ │ ├── midnight.css │ │ │ ├── monokai.css │ │ │ ├── neat.css │ │ │ ├── neo.css │ │ │ ├── night.css │ │ │ ├── paraiso-dark.css │ │ │ ├── paraiso-light.css │ │ │ ├── pastel-on-dark.css │ │ │ ├── rubyblue.css │ │ │ ├── solarized.css │ │ │ ├── the-matrix.css │ │ │ ├── tomorrow-night-bright.css │ │ │ ├── tomorrow-night-eighties.css │ │ │ ├── twilight.css │ │ │ ├── vibrant-ink.css │ │ │ ├── xq-dark.css │ │ │ ├── xq-light.css │ │ │ └── zenburn.css │ ├── flowchart.min.js │ ├── jquery.flowchart.min.js │ ├── marked.min.js │ ├── prettify.min.js │ ├── raphael.min.js │ ├── sequence-diagram.min.js │ └── underscore.min.js │ ├── package.json │ ├── plugins │ ├── code-block-dialog │ │ └── code-block-dialog.js │ ├── emoji-dialog │ │ ├── emoji-dialog.js │ │ └── emoji.json │ ├── goto-line-dialog │ │ └── goto-line-dialog.js │ ├── help-dialog │ │ └── help-dialog.js │ ├── html-entities-dialog │ │ ├── html-entities-dialog.js │ │ └── html-entities.json │ ├── image-dialog │ │ └── image-dialog.js │ ├── link-dialog │ │ └── link-dialog.js │ ├── plugin-template.js │ ├── preformatted-text-dialog │ │ └── preformatted-text-dialog.js │ ├── reference-link-dialog │ │ └── reference-link-dialog.js │ ├── table-dialog │ │ └── table-dialog.js │ └── test-plugin │ │ └── test-plugin.js │ ├── scss │ ├── editormd.codemirror.scss │ ├── editormd.dialog.scss │ ├── editormd.form.scss │ ├── editormd.grid.scss │ ├── editormd.logo.scss │ ├── editormd.menu.scss │ ├── editormd.preview.scss │ ├── editormd.preview.themes.scss │ ├── editormd.scss │ ├── editormd.tab.scss │ ├── editormd.themes.scss │ ├── font-awesome.scss │ ├── github-markdown.scss │ ├── lib │ │ ├── prefixes.scss │ │ └── variables.scss │ └── prettify.scss │ ├── src │ └── editormd.js │ └── tests │ ├── bootstrap-test.html │ ├── codemirror-searchbox-test.html │ ├── codemirror-test.html │ ├── css │ ├── bootstrap-theme.min.css │ └── bootstrap.min.css │ ├── js │ ├── bootstrap.min.js │ └── searchbox.js │ ├── katex-tests.html │ ├── marked-@at-test.html │ ├── marked-emoji-test.html │ ├── marked-heading-link-test.html │ ├── marked-todo-list-test.html │ └── qunit │ ├── qunit-1.16.0.css │ └── qunit-1.16.0.js └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/**/target/ 5 | !**/src/test/**/target/ 6 | 7 | ### STS ### 8 | .apt_generated 9 | .classpath 10 | .factorypath 11 | .project 12 | .settings 13 | .springBeans 14 | .sts4-cache 15 | 16 | ### IntelliJ IDEA ### 17 | .idea 18 | *.iws 19 | *.iml 20 | *.ipr 21 | 22 | ### NetBeans ### 23 | /nbproject/private/ 24 | /nbbuild/ 25 | /dist/ 26 | /nbdist/ 27 | /.nb-gradle/ 28 | build/ 29 | !**/src/main/**/build/ 30 | !**/src/test/**/build/ 31 | 32 | ### VS Code ### 33 | .vscode/ 34 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.1.x | :white_check_mark: | 11 | | 5.0.x | :x: | 12 | | 4.0.x | :white_check_mark: | 13 | | < 4.0 | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/BlogAdminApplication.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.scheduling.annotation.EnableScheduling; 7 | import org.springframework.transaction.annotation.EnableTransactionManagement; 8 | 9 | @SpringBootApplication 10 | @MapperScan("com.zoe.blog.dao") 11 | @EnableTransactionManagement 12 | @EnableScheduling 13 | public class BlogAdminApplication { 14 | 15 | public static void main(String[] args) { 16 | SpringApplication.run(BlogAdminApplication.class, args); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/config/CorsConfig.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.CorsRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 6 | 7 | /** 8 | * 解决跨域问题 9 | * Created by liuxuelian on 2020/07/23 22:59 10 | */ 11 | @Configuration 12 | public class CorsConfig implements WebMvcConfigurer { 13 | @Override 14 | public void addCorsMappings(CorsRegistry registry) { 15 | registry.addMapping("/**") 16 | .allowCredentials(true) 17 | .allowedOrigins("*") 18 | .allowedMethods("*") 19 | .allowedHeaders("*") 20 | .maxAge(3600); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/config/DruidConfig.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.config; 2 | 3 | import com.alibaba.druid.pool.DruidDataSource; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | import javax.sql.DataSource; 9 | 10 | /** 11 | * 配置 Druid 数据源 12 | * Created by liuxuelian on 2020/07/23 23:00 13 | */ 14 | @Configuration 15 | public class DruidConfig { 16 | 17 | @ConfigurationProperties(prefix = "spring.datasource") 18 | @Bean 19 | public DataSource druid() { 20 | return new DruidDataSource(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/config/OssConfig.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.config; 2 | 3 | import com.aliyun.oss.OSSClient; 4 | import org.springframework.beans.factory.annotation.Value; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | 8 | /** 9 | * OSS对象存储相关配置 10 | * Created by liuxuelian on 2020/07/24 00:41 11 | */ 12 | @Configuration 13 | public class OssConfig { 14 | @Value("${aliyun.oss.endpoint}") 15 | private String ALIYUN_OSS_ENDPOINT; 16 | @Value("${aliyun.oss.accessKeyId}") 17 | private String ALIYUN_OSS_ACCESSKEYID; 18 | @Value("${aliyun.oss.accessKeySecret}") 19 | private String ALIYUN_OSS_ACCESSKEYSECRET; 20 | 21 | @Bean 22 | public OSSClient ossClient(){ 23 | return new OSSClient(ALIYUN_OSS_ENDPOINT,ALIYUN_OSS_ACCESSKEYID,ALIYUN_OSS_ACCESSKEYSECRET); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/controller/web/WebDataController.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.controller.web; 2 | 3 | import com.zoe.blog.model.Uv; 4 | import com.zoe.blog.service.WebDataService; 5 | import com.zoe.blog.utils.CommonPage; 6 | import com.zoe.blog.utils.CommonResult; 7 | import io.swagger.annotations.Api; 8 | import io.swagger.annotations.ApiOperation; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.web.bind.annotation.GetMapping; 11 | import org.springframework.web.bind.annotation.RequestMapping; 12 | import org.springframework.web.bind.annotation.RestController; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * Created by liuxuelian on 2020/07/30 17:37 18 | */ 19 | @Api(tags = "WebDataController", description = "首页数据统计") 20 | @RestController 21 | @RequestMapping("/web/data") 22 | public class WebDataController { 23 | @Autowired 24 | WebDataService webDataService; 25 | 26 | @ApiOperation("获取最近七天的访问量") 27 | @GetMapping("/seven") 28 | public CommonResult> getRecentlySevenDays() { 29 | List uvs = webDataService.getRecentlySevenDays(); 30 | return CommonResult.success(CommonPage.restPage(uvs)); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/ArticleCategoryRefDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.model.ArticleCategoryRef; 4 | import com.zoe.blog.model.Category; 5 | import org.apache.ibatis.annotations.Param; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/24 20:04 12 | */ 13 | @Repository 14 | public interface ArticleCategoryRefDao { 15 | 16 | Category findCategoryByArticleId(Integer articleId); 17 | 18 | int insert(ArticleCategoryRef articleCategoryRef); 19 | 20 | void deleteByArticleId(Integer articleId); 21 | 22 | void deleteByCategoryId(Integer categoryId); 23 | } 24 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/ArticleDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.dto.ArticleQueryParam; 4 | import com.zoe.blog.model.Article; 5 | import org.apache.ibatis.annotations.Param; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/24 18:08 12 | */ 13 | @Repository 14 | public interface ArticleDao { 15 | 16 | List
getList(ArticleQueryParam articleQueryParam); 17 | 18 | Article findByArticleId(Integer id); 19 | 20 | int insert(Article article); 21 | 22 | int update(Article article); 23 | 24 | int addOneViews(Integer articleId); 25 | 26 | int delete(Integer id); 27 | } 28 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/CategoryDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.model.Category; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Created by liuxuelian on 2020/07/24 19:42 10 | */ 11 | @Repository 12 | public interface CategoryDao { 13 | 14 | List getList(String name); 15 | 16 | List search(String name); 17 | 18 | Category findById(Integer id); 19 | 20 | Category findByCategoryName(String categoryName); 21 | 22 | int insert(Category category); 23 | 24 | int update(Category category); 25 | 26 | int delete(Integer id); 27 | } 28 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/CommentDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.dto.CommentEnabledParam; 4 | import com.zoe.blog.model.Comment; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by liuxuelian on 2020/07/28 11:14 11 | */ 12 | @Repository 13 | public interface CommentDao { 14 | 15 | List getList(); 16 | 17 | List findCommentByArticleId(Integer articleId); 18 | 19 | int updateEnabled(CommentEnabledParam commentEnabledParam); 20 | 21 | int delete(Integer id); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/LogDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.dto.LogQueryParam; 4 | import com.zoe.blog.model.Log; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by liuxuelian on 2020/08/01 11:05 11 | */ 12 | @Repository 13 | public interface LogDao { 14 | List getLogs(LogQueryParam queryParam); 15 | 16 | List getLevelGroup(); 17 | 18 | int delete(Integer id); 19 | } 20 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/LoginUserDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.model.LoginUser; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.Date; 7 | 8 | /** 9 | * Created by liuxuelian on 2020/07/24 22:31 10 | */ 11 | @Repository 12 | public interface LoginUserDao { 13 | LoginUser findByUsername(String username); 14 | 15 | void updateLastLoginTime(String username, Long lastLoginTime); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/ReplyDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.model.Reply; 4 | import org.springframework.stereotype.Repository; 5 | 6 | /** 7 | * Created by liuxuelian on 2020/07/28 11:12 8 | */ 9 | @Repository 10 | public interface ReplyDao { 11 | 12 | int insert(Reply reply); 13 | 14 | int update(Reply reply); 15 | 16 | int delete(Integer id); 17 | 18 | int deleteByCommentId(Integer commentId); 19 | } 20 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.model.Role; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by liuxuelian on 2020/07/24 02:09 11 | */ 12 | @Repository 13 | public interface RoleDao { 14 | 15 | List getList(String roleName); 16 | 17 | List search(String roleName); 18 | 19 | Role findByRoleId(Integer id); 20 | 21 | Role findByRoleName(String roleName); 22 | 23 | int insert(Role role); 24 | 25 | int update(Role role); 26 | 27 | int delete(Integer id); 28 | } 29 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.model.User; 4 | import org.apache.ibatis.annotations.Param; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by liuxuelian on 2020/07/24 11:08 11 | */ 12 | @Repository 13 | public interface UserDao { 14 | 15 | List getList(String username); 16 | 17 | List search(String username); 18 | 19 | User findByUserId(Integer id); 20 | 21 | int insert(User user); 22 | 23 | int update(User user); 24 | 25 | int modifyPassword(Integer id, String newPassword); 26 | 27 | int delete(Integer id); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/UserRoleRefDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.model.Role; 4 | import com.zoe.blog.model.UserRoleRef; 5 | import org.apache.ibatis.annotations.Param; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/24 11:43 12 | */ 13 | @Repository 14 | public interface UserRoleRefDao { 15 | 16 | Role getRoleByUserId(Integer userId); 17 | 18 | int insert(UserRoleRef roleRef); 19 | 20 | void deleteByUserId(@Param("userId") Integer userId); 21 | 22 | void deleteByRoleId(@Param("roleId") Integer roleId); 23 | } 24 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/UvDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.dto.UvAmountParam; 4 | import com.zoe.blog.model.Uv; 5 | import org.springframework.stereotype.Repository; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 统计每日访问量 11 | * Created by liuxuelian on 2020/07/30 15:37 12 | */ 13 | @Repository 14 | public interface UvDao { 15 | 16 | Uv getCurrentDay(); 17 | 18 | UvAmountParam getUvAmount(); 19 | 20 | 21 | List getRecentlySevenDays(); 22 | 23 | /** 24 | * 初始化新增当日的记录 25 | */ 26 | int insert(); 27 | 28 | int addOneUv(); 29 | 30 | int addOneComments(); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/WebArticleDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.dto.WebArchiveDto; 4 | import com.zoe.blog.dto.WebCategoryDto; 5 | import com.zoe.blog.model.Article; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/29 11:19 12 | */ 13 | @Repository 14 | public interface WebArticleDao { 15 | 16 | List getArchive(); 17 | 18 | List
findArticlesByTitle(String title); 19 | 20 | List
findArticleCountByArchive(String date); 21 | 22 | List findArticleCountByCategory(); 23 | 24 | List
findArticleByCategoryId(Integer categoryId); 25 | 26 | int getArticleCount(); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/WebCategoryDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.dto.WebCategoryDto; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Created by liuxuelian on 2020/07/30 20:50 10 | */ 11 | @Repository 12 | public interface WebCategoryDao { 13 | List getCategoryCount(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dao/WebCommentDao.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dao; 2 | 3 | import com.zoe.blog.model.Comment; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * Created by liuxuelian on 2020/07/30 11:56 10 | */ 11 | @Repository 12 | public interface WebCommentDao { 13 | 14 | List getCommentsByArticleId(Integer articleId); 15 | 16 | /** 17 | * 获取最新的前8条评论 18 | * @return 19 | */ 20 | List getCommentsLimitEight(); 21 | 22 | int getCommentCount(); 23 | 24 | int insert(Comment comment); 25 | 26 | } 27 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/ArticleQueryParam.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * Created by liuxuelian on 2020/07/31 13:17 11 | */ 12 | @Data 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class ArticleQueryParam implements Serializable { 16 | private String title; 17 | private String viewsOrder; 18 | private Integer pageNum; 19 | private Integer pageSize; 20 | } 21 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/AssignCategoryParam.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.validation.constraints.NotNull; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/27 22:14 12 | */ 13 | @Data 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class AssignCategoryParam implements Serializable { 17 | @NotNull(message = "分配分类的文章id不能为空") 18 | private Integer articleId; 19 | @NotNull(message = "分配分类的名称不能为空") 20 | private String categoryName; 21 | } 22 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/AssignRoleParam.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.validation.constraints.NotNull; 8 | import java.io.Serializable; 9 | import java.util.List; 10 | 11 | /** 12 | * Created by liuxuelian on 2020/07/27 22:14 13 | */ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class AssignRoleParam implements Serializable { 18 | @NotNull(message = "分配角色的用户id不能为空") 19 | private Integer userId; 20 | @NotNull(message = "分配角色的名称不能为空") 21 | private String roleNames; 22 | } 23 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/CommentEnabledParam.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.validation.constraints.NotNull; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/28 15:09 12 | */ 13 | @Data 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class CommentEnabledParam implements Serializable { 17 | @NotNull(message = "评论id不能为空") 18 | private Integer id; 19 | 20 | @NotNull(message = "评论是否显示不能为空") 21 | private Boolean enabled; 22 | } 23 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/LogQueryParam.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/08/01 14:01 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class LogQueryParam implements Serializable { 17 | private String level; 18 | private String date; // 格式: "2020-07-31" 19 | private Integer pageNum; 20 | private Integer pageSize; 21 | } 22 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/ModifyPasswordParam.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.hibernate.validator.constraints.Length; 7 | 8 | import javax.validation.constraints.NotNull; 9 | import java.io.Serializable; 10 | 11 | /** 12 | * Created by liuxuelian on 2020/07/27 19:39 13 | */ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class ModifyPasswordParam implements Serializable { 18 | @NotNull(message = "用户id不能为空") 19 | private Integer id; 20 | 21 | @NotNull(message = "原密码不能为空") 22 | @Length(min = 2, max = 20, message = "原密码长度要在2到20之间") 23 | private String rawPassword; 24 | 25 | @NotNull(message = "新密码不能为空") 26 | @Length(min = 2, max = 20, message = "新密码长度要在2到20之间") 27 | private String newPassword; 28 | } 29 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/OssCallbackParam.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * oss上传成功后的回调参数 9 | * Created by liuxuelian on 2020/07/24 00:42 10 | */ 11 | @Data 12 | @EqualsAndHashCode(callSuper = false) 13 | public class OssCallbackParam { 14 | @ApiModelProperty("请求的回调地址") 15 | private String callbackUrl; 16 | 17 | @ApiModelProperty("回调是传入request中的参数") 18 | private String callbackBody; 19 | 20 | @ApiModelProperty("回调时传入参数的格式,比如表单提交形式") 21 | private String callbackBodyType; 22 | } 23 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/OssCallbackResult.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * oss上传文件的回调结果 9 | * Created by liuxuelian on 2020/07/24 00:43 10 | */ 11 | @Data 12 | @EqualsAndHashCode(callSuper = false) 13 | public class OssCallbackResult { 14 | @ApiModelProperty("文件名称") 15 | private String filename; 16 | 17 | @ApiModelProperty("文件大小") 18 | private String size; 19 | 20 | @ApiModelProperty("文件的mimeType") 21 | private String mimeType; 22 | 23 | @ApiModelProperty("图片文件的宽") 24 | private String width; 25 | 26 | @ApiModelProperty("图片文件的高") 27 | private String height; 28 | } 29 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/OssPolicyResult.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import io.swagger.annotations.ApiModelProperty; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | /** 8 | * 获取OSS上传文件授权返回结果 9 | * Created by liuxuelian on 2020/07/24 00:44 10 | */ 11 | @Data 12 | @EqualsAndHashCode(callSuper = false) 13 | public class OssPolicyResult { 14 | @ApiModelProperty("访问身份验证中用到用户标识") 15 | private String accessKeyId; 16 | 17 | @ApiModelProperty("用户表单上传的策略,经过base64编码过的字符串") 18 | private String policy; 19 | 20 | @ApiModelProperty("对policy签名后的字符串") 21 | private String signature; 22 | 23 | @ApiModelProperty("上传文件夹路径前缀") 24 | private String dir; 25 | 26 | @ApiModelProperty("oss对外服务的访问域名") 27 | private String host; 28 | 29 | @ApiModelProperty("上传成功后的回调设置") 30 | private String callback; 31 | } 32 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/UvAmountParam.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * Created by liuxuelian on 2020/07/31 12:43 11 | */ 12 | @Data 13 | @NoArgsConstructor 14 | @AllArgsConstructor 15 | public class UvAmountParam implements Serializable { 16 | private Integer uv; 17 | private Integer comments; 18 | } 19 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/WebArchiveDto.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * 文章根据月份进行归档 11 | * Created by liuxuelian on 2020/07/29 11:24 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class WebArchiveDto implements Serializable { 17 | private Integer count; 18 | private String archiveTime; // '2020-01' 格式 19 | } 20 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/dto/WebCategoryDto.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * Created by liuxuelian on 2020/07/29 12:07 11 | */ 12 | @Data 13 | @AllArgsConstructor 14 | @NoArgsConstructor 15 | public class WebCategoryDto implements Serializable { 16 | private Integer id; 17 | private String name; 18 | private Integer count; // 分类文章总数 19 | } 20 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/exception/RestApiException.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.exception; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | /** 8 | * Created by liuxuelian on 2020/07/31 15:52 9 | */ 10 | @Data 11 | @NoArgsConstructor 12 | @AllArgsConstructor 13 | public class RestApiException extends RuntimeException { 14 | private Integer code; 15 | private String message; 16 | 17 | public RestApiException(String message) { 18 | super(message); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/Article.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.hibernate.validator.constraints.Length; 7 | import org.springframework.format.annotation.DateTimeFormat; 8 | 9 | import javax.validation.constraints.NotNull; 10 | import java.io.Serializable; 11 | import java.util.Date; 12 | 13 | /** 14 | * Created by liuxuelian on 2020/07/24 18:03 15 | */ 16 | @Data 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class Article implements Serializable { 20 | private Integer id; 21 | 22 | @NotNull(message = "文章标题不能为空") 23 | @Length(max = 100, message = "文章标题不能超过100个字符") 24 | private String title; 25 | 26 | @NotNull(message = "文章内容不能为空") 27 | private String content; 28 | 29 | private Boolean status; 30 | 31 | private Integer views; // 文章访问量 32 | 33 | private Boolean allowComment; // 是否允许评论:true允许 false禁止 34 | 35 | private Long createTime; 36 | 37 | private Long lastUpdateTime; 38 | 39 | private Integer sort; // 文章显示顺序 40 | 41 | private String name; // 分类名称(冗余) 42 | } 43 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/ArticleCategoryRef.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.validation.constraints.NotNull; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/24 20:03 12 | */ 13 | @Data 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class ArticleCategoryRef implements Serializable { 17 | private Integer id; 18 | 19 | @NotNull(message = "文章id不能为空") 20 | private Integer articleId; 21 | 22 | @NotNull(message = "分类id不能为空") 23 | private Integer categoryId; 24 | } 25 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/Category.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.hibernate.validator.constraints.Length; 7 | import org.springframework.format.annotation.DateTimeFormat; 8 | 9 | import javax.validation.constraints.NotNull; 10 | import java.io.Serializable; 11 | import java.util.Date; 12 | 13 | /** 14 | * Created by liuxuelian on 2020/07/24 19:39 15 | */ 16 | @Data 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class Category implements Serializable { 20 | private Integer id; 21 | 22 | @NotNull(message = "分类名称不能为空") 23 | @Length(min = 2, max = 20, message = "分类名称的长度要在2到20个字符之间") 24 | private String name; 25 | 26 | private Integer sort; 27 | 28 | private Long createTime; 29 | 30 | private Boolean enabled; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/Comment.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.hibernate.validator.constraints.Length; 7 | 8 | import javax.validation.constraints.NotNull; 9 | import java.io.Serializable; 10 | 11 | /** 12 | * Created by liuxuelian on 2020/07/28 11:05 13 | */ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class Comment implements Serializable { 18 | 19 | private Integer id; 20 | 21 | @NotNull(message = "评论内容不能为空") 22 | @Length(max = 500, message = "评论内容的长度不能超过500个字符") 23 | private String content; 24 | 25 | private Long createTime; 26 | 27 | private Boolean enabled; 28 | 29 | @NotNull(message = "评论的访客昵称不能为空") 30 | @Length(min = 2, max = 10, message = "评论访客的名称的长度要在2到10之间") 31 | private String visitorNickname; 32 | 33 | @NotNull(message = "评论的访客的邮箱不能为空") 34 | @Length(max = 30, message = "评论的访客的邮箱的长度不能超过30个字符") 35 | private String visitorEmail; 36 | 37 | private Integer articleId; 38 | 39 | private Article article; 40 | 41 | private Reply reply; 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/Log.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/08/01 11:03 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class Log implements Serializable { 17 | private Integer id; 18 | private String username; 19 | private String ip; 20 | private String params; 21 | private Long createDate; 22 | private String level; 23 | private String thread; 24 | private String location; 25 | private String message; 26 | } 27 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/Reply.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.hibernate.validator.constraints.Length; 7 | 8 | import javax.validation.constraints.NotNull; 9 | import java.io.Serializable; 10 | 11 | /** 12 | * Created by liuxuelian on 2020/07/28 11:05 13 | */ 14 | @Data 15 | @NoArgsConstructor 16 | @AllArgsConstructor 17 | public class Reply implements Serializable { 18 | private Integer id; 19 | 20 | @NotNull(message = "回复的内容不能为空") 21 | @Length(max = 500, message = "回复的内容长度不能超过500个字符") 22 | private String content; 23 | 24 | private Boolean enabled; 25 | 26 | private Long createTime; 27 | 28 | private Integer commentId; 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/Role.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | import org.hibernate.validator.constraints.Length; 7 | import org.springframework.format.annotation.DateTimeFormat; 8 | 9 | import javax.validation.constraints.NotNull; 10 | import java.io.Serializable; 11 | import java.util.Date; 12 | 13 | /** 14 | * Created by liuxuelian on 2020/07/24 01:49 15 | */ 16 | @Data 17 | @NoArgsConstructor 18 | @AllArgsConstructor 19 | public class Role implements Serializable { 20 | private Integer id; 21 | 22 | @NotNull(message = "角色名称不能为空") 23 | @Length(min = 2, max = 20, message = "角色名称的长度要在2到20之间") 24 | private String name; 25 | 26 | @Length(max = 50, message = "角色描述不能超过50个字符") 27 | private String description; 28 | 29 | private Long createTime; 30 | } 31 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/UserRoleRef.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import javax.validation.constraints.NotNull; 8 | import java.io.Serializable; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/24 02:08 12 | */ 13 | @Data 14 | @NoArgsConstructor 15 | @AllArgsConstructor 16 | public class UserRoleRef implements Serializable { 17 | private Integer id; 18 | 19 | @NotNull(message = "用户id不能为空") 20 | private Integer userId; 21 | 22 | @NotNull(message = "角色id不能为空") 23 | private Integer roleId; 24 | } 25 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/model/Uv.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/30 17:32 12 | */ 13 | @Data 14 | @AllArgsConstructor 15 | @NoArgsConstructor 16 | public class Uv implements Serializable { 17 | private String date; 18 | private Date dateTime; 19 | private Integer uv; 20 | private Integer comments; 21 | } 22 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/scheduled/UvScheduled.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.scheduled; 2 | 3 | import com.zoe.blog.dao.UvDao; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.scheduling.annotation.Scheduled; 6 | import org.springframework.stereotype.Component; 7 | 8 | /** 9 | * Created by liuxuelian on 2020/07/30 15:24 10 | */ 11 | @Component 12 | public class UvScheduled { 13 | 14 | @Autowired 15 | UvDao uvDao; 16 | 17 | @Scheduled(cron = "${time.cron}") 18 | public void createUvCurrentDateRecord() { 19 | uvDao.insert(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/security/RestAccessDeniedHandler.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.security; 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper; 4 | import com.zoe.blog.utils.CommonResult; 5 | import org.springframework.security.access.AccessDeniedException; 6 | import org.springframework.security.web.access.AccessDeniedHandler; 7 | 8 | import javax.servlet.ServletException; 9 | import javax.servlet.http.HttpServletRequest; 10 | import javax.servlet.http.HttpServletResponse; 11 | import java.io.IOException; 12 | 13 | /** 14 | * 自定义返回结果:没有访问权限时返回 15 | * @author liuxuelian 16 | * @date 2020-07-18 15:59 17 | */ 18 | public class RestAccessDeniedHandler implements AccessDeniedHandler { 19 | @Override 20 | public void handle(HttpServletRequest request, 21 | HttpServletResponse response, 22 | AccessDeniedException e) throws IOException, ServletException { 23 | response.setContentType("application/json;charset=utf-8"); 24 | System.out.println("没有权限"); 25 | response.getWriter().println(new ObjectMapper().writeValueAsString(CommonResult.forbidden())); 26 | response.getWriter().flush(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/LogService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.github.pagehelper.PageHelper; 4 | import com.zoe.blog.dao.LogDao; 5 | import com.zoe.blog.dto.LogQueryParam; 6 | import com.zoe.blog.model.Log; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * Created by liuxuelian on 2020/08/01 11:08 14 | */ 15 | @Service 16 | public class LogService { 17 | @Autowired 18 | LogDao logDao; 19 | 20 | 21 | public List list(LogQueryParam queryParam) { 22 | PageHelper.startPage(queryParam.getPageNum(), queryParam.getPageSize()); 23 | return logDao.getLogs(queryParam); 24 | } 25 | 26 | public List getLevelGroup() { 27 | return logDao.getLevelGroup(); 28 | } 29 | 30 | public int delete(Integer id) { 31 | return logDao.delete(id); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/LoginUserService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.zoe.blog.dao.LoginUserDao; 4 | import com.zoe.blog.model.LoginUser; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.security.core.userdetails.UserDetails; 7 | import org.springframework.security.core.userdetails.UserDetailsService; 8 | import org.springframework.security.core.userdetails.UsernameNotFoundException; 9 | import org.springframework.stereotype.Service; 10 | 11 | /** 12 | * Created by liuxuelian on 2020/07/24 22:38 13 | */ 14 | @Service 15 | public class LoginUserService implements UserDetailsService { 16 | 17 | @Autowired 18 | LoginUserDao userDao; 19 | 20 | @Override 21 | public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { 22 | LoginUser user = userDao.findByUsername(username); 23 | 24 | if (user == null) { 25 | throw new UsernameNotFoundException("用户名不存在"); 26 | } 27 | return user; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/ReplyService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.zoe.blog.dao.ReplyDao; 4 | import com.zoe.blog.model.Reply; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | /** 9 | * Created by liuxuelian on 2020/07/28 15:42 10 | */ 11 | @Service 12 | public class ReplyService { 13 | 14 | @Autowired 15 | ReplyDao replyDao; 16 | 17 | public int insert(Reply reply) { 18 | return replyDao.insert(reply); 19 | } 20 | 21 | public int update(Reply reply) { 22 | return replyDao.update(reply); 23 | } 24 | 25 | public int delete(Integer id) { 26 | return replyDao.delete(id); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/UserRoleRefService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.zoe.blog.dao.UserRoleRefDao; 4 | import com.zoe.blog.model.Role; 5 | import com.zoe.blog.model.UserRoleRef; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | import org.springframework.transaction.annotation.Transactional; 9 | 10 | import java.util.List; 11 | 12 | /** 13 | * Created by liuxuelian on 2020/07/24 11:51 14 | */ 15 | @Service 16 | public class UserRoleRefService { 17 | @Autowired 18 | UserRoleRefDao userRoleRefDao; 19 | 20 | public Role getRoleByUserId(Integer userId) { 21 | return userRoleRefDao.getRoleByUserId(userId); 22 | } 23 | 24 | /** 25 | * 批量插入用户拥有的角色 26 | * @param roleRef 27 | */ 28 | @Transactional 29 | public int insert(UserRoleRef roleRef) { 30 | 31 | // 添加数据前删除用户之前拥有的权限 32 | userRoleRefDao.deleteByUserId(roleRef.getUserId()); 33 | 34 | return userRoleRefDao.insert(roleRef); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/UvService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.zoe.blog.dao.UvDao; 4 | import com.zoe.blog.dto.UvAmountParam; 5 | import com.zoe.blog.model.Uv; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * Created by liuxuelian on 2020/07/31 12:45 11 | */ 12 | @Service 13 | public class UvService { 14 | @Autowired 15 | UvDao uvDao; 16 | 17 | public Uv getCurrentDay() { 18 | return uvDao.getCurrentDay(); 19 | } 20 | 21 | public UvAmountParam getUvAmount() { 22 | return uvDao.getUvAmount(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/WebCategoryService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.zoe.blog.dao.WebCategoryDao; 4 | import com.zoe.blog.dto.WebCategoryDto; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Created by liuxuelian on 2020/07/30 20:52 12 | */ 13 | @Service 14 | public class WebCategoryService { 15 | @Autowired 16 | WebCategoryDao webCategoryDao; 17 | 18 | public List getCategoryCount() { 19 | return webCategoryDao.getCategoryCount(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/WebCommentService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.zoe.blog.dao.UvDao; 4 | import com.zoe.blog.dao.WebCommentDao; 5 | import com.zoe.blog.model.Comment; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * Created by liuxuelian on 2020/07/30 11:56 13 | */ 14 | @Service 15 | public class WebCommentService { 16 | @Autowired 17 | WebCommentDao webCommentDao; 18 | 19 | @Autowired 20 | UvDao uvDao; 21 | 22 | public List list(Integer articleId) { 23 | return webCommentDao.getCommentsByArticleId(articleId); 24 | } 25 | 26 | public List getCommentLimitEight() { 27 | return webCommentDao.getCommentsLimitEight(); 28 | } 29 | 30 | public int getCommentCount() { 31 | return webCommentDao.getCommentCount(); 32 | } 33 | 34 | public int insert(Comment comment) { 35 | // 记录日评论数 36 | uvDao.addOneComments(); 37 | 38 | return webCommentDao.insert(comment); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/WebDataService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.zoe.blog.dao.UvDao; 4 | import com.zoe.blog.model.Uv; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 数据统计 12 | * Created by liuxuelian on 2020/07/30 17:37 13 | */ 14 | @Service 15 | public class WebDataService { 16 | @Autowired 17 | UvDao uvDao; 18 | 19 | public List getRecentlySevenDays() { 20 | return uvDao.getRecentlySevenDays(); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/service/WebUserDetailService.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.service; 2 | 3 | import com.zoe.blog.dao.UserDao; 4 | import com.zoe.blog.model.User; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.stereotype.Service; 7 | 8 | /** 9 | * Created by liuxuelian on 2020/07/29 16:51 10 | */ 11 | @Service 12 | public class WebUserDetailService { 13 | @Autowired 14 | UserDao userDao; 15 | 16 | /** 17 | * 获取展示在博客首页的博主信息 18 | */ 19 | public User getUserDetail() { 20 | return userDao.getList("nico").get(0); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/utils/CommonPage.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.utils; 2 | 3 | import com.github.pagehelper.PageInfo; 4 | import lombok.Data; 5 | import lombok.NoArgsConstructor; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 分页数据封装类 11 | * Created by liuxuelian on 2020/07/24 00:51 12 | */ 13 | @Data 14 | @NoArgsConstructor 15 | public class CommonPage { 16 | private Integer pageNum; 17 | private Integer pageSize; 18 | private Integer totalPage; 19 | private Long total; 20 | private List list; 21 | 22 | /** 23 | * 将PageHelper分页后的list转为分页信息 24 | * @param list 25 | */ 26 | public static CommonPage restPage(List list) { 27 | CommonPage result = new CommonPage<>(); 28 | PageInfo pageInfo = new PageInfo<>(list); 29 | 30 | result.setPageNum(pageInfo.getPageNum()); 31 | result.setPageSize(pageInfo.getPageSize()); 32 | result.setTotalPage(pageInfo.getPages()); 33 | result.setTotal(pageInfo.getTotal()); 34 | result.setList(pageInfo.getList()); 35 | 36 | return result; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/utils/RestBCryptPasswordEncoder.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.utils; 2 | 3 | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * 密码的加密和密码判断是否相等 8 | * Created by liuxuelian on 2020/07/27 16:02 9 | */ 10 | @Component 11 | public class RestBCryptPasswordEncoder { 12 | /** 13 | * 加密 14 | * @param rawPassword 15 | * @return 16 | */ 17 | public String passwrodEncoder(String rawPassword) { 18 | BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); 19 | return encoder.encode(rawPassword); 20 | } 21 | 22 | /** 23 | * 判断密码是否相等 24 | * @param rawPassword 25 | * @param encodedPassword 26 | * @return 27 | */ 28 | public Boolean passwordMatch(String rawPassword, String encodedPassword) { 29 | BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); 30 | return encoder.matches(rawPassword, encodedPassword); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /blog-admin/src/main/java/com/zoe/blog/utils/ResultCode.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog.utils; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Getter; 5 | 6 | /** 7 | * 枚举常用的API操作码 8 | * Created by liuxuelian on 2020/07/24 00:49 9 | */ 10 | @Getter 11 | @AllArgsConstructor 12 | public enum ResultCode { 13 | SUCCESS(200, "操作成功"), 14 | FAILED(500, "操作失败"), 15 | VALIDATE_FAILED(400, "参数检验失败"), 16 | UNAUTHORIZED(401, "暂未登录或token已经失效"), 17 | FORBIDDEN(403, "没有相关权限"); 18 | 19 | private int code; 20 | private String msg; 21 | } 22 | -------------------------------------------------------------------------------- /blog-admin/src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | # \u914D\u7F6Elog4j 2 | 3 | #log4j.rootLogger=CONSOLE,INFO,DB 4 | log4j.rootLogger=DEBUG,CONSOLE,DB 5 | 6 | log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 7 | log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 8 | log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS} %5p %4L === [%.15t] %-40c : %m%n 9 | 10 | 11 | # \u5C06\u65E5\u5FD7\u5199\u5165\u6570\u636E\u5E93 12 | log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender 13 | log4j.appender.DB.driver=com.mysql.cj.jdbc.Driver 14 | log4j.appender.DB.URL=jdbc:mysql://127.0.0.1:3306/blog 15 | log4j.appender.DB.user=root 16 | log4j.appender.DB.password=keeptryinglxl 17 | log4j.appender.DB.sql=INSERT INTO b_log (username,ip,params,create_date,level,thread,location,message) values ('%X{username}','%X{ip}','%X{params}','%X{nowTime}','%.10p','%.100t','%.200l','%.512m') 18 | log4j.appender.DB.Threshold=INFO 19 | log4j.appender.DB.layout=org.apache.log4j.PatternLayout 20 | -------------------------------------------------------------------------------- /blog-admin/src/main/resources/mapper/ArticleCategoryRefMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 11 | 12 | 13 | insert into b_article_category (article_id, category_id) values (#{articleId}, #{categoryId}) 14 | 15 | 16 | 17 | delete from b_article_category where article_id=#{articleId} 18 | 19 | 20 | 21 | delete from b_article_category where category_id=#{categoryId} 22 | 23 | 24 | -------------------------------------------------------------------------------- /blog-admin/src/main/resources/mapper/LogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 19 | 20 | 23 | 24 | 25 | delete from b_log where id=#{id} 26 | 27 | -------------------------------------------------------------------------------- /blog-admin/src/main/resources/mapper/ReplyMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | insert into b_reply (content, enabled, comment_id, create_time) values 9 | (#{content}, #{enabled}, #{commentId}, #{createTime}) 10 | 11 | 12 | 13 | update b_reply 14 | 15 | 16 | content=#{content}, 17 | 18 | 19 | enabled=#{enabled} 20 | 21 | 22 | where id=#{id} 23 | 24 | 25 | 26 | delete from b_reply where id=#{id} 27 | 28 | 29 | 30 | 31 | delete from b_reply where comment_id=#{commentId} 32 | 33 | 34 | -------------------------------------------------------------------------------- /blog-admin/src/main/resources/mapper/UserRoleRefMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 11 | 12 | 13 | insert into b_user_role (user_id, role_id) values (#{userId}, #{roleId}) 14 | 15 | 16 | 17 | delete from b_user_role where user_id=#{userId} 18 | 19 | 20 | 21 | delete from b_user_role where role_id=#{roleId} 22 | 23 | 24 | -------------------------------------------------------------------------------- /blog-admin/src/main/resources/mapper/WebCategoryMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /blog-admin/src/test/java/com/zoe/blog/BlogAdminApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.zoe.blog; 2 | 3 | import com.zoe.blog.dao.CommentDao; 4 | import com.zoe.blog.model.Comment; 5 | import org.junit.jupiter.api.Test; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.boot.test.context.SpringBootTest; 8 | 9 | import java.util.Date; 10 | import java.util.List; 11 | 12 | @SpringBootTest 13 | class BlogAdminApplicationTests { 14 | 15 | @Test 16 | public void test() { 17 | long time = new Date().getTime(); 18 | System.out.println("time = " + time); 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /blog-web/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /blog-web/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | trim_trailing_whitespace = true 5 | insert_final_newline = true 6 | -------------------------------------------------------------------------------- /blog-web/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true 5 | }, 6 | extends: [ 7 | 'plugin:vue/essential', 8 | '@vue/standard' 9 | ], 10 | parserOptions: { 11 | parser: 'babel-eslint' 12 | }, 13 | rules: { 14 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 16 | 'space-before-function-paren': 'off', // 函数定义时括号前面要不要有空格 17 | 'eol-last': 'off', // 文件以单一的换行符结束 18 | 'no-extra-semi': 'off', // 可以多余的冒号 19 | semi: 'off', // 语句可以不需要分号结尾 20 | eqeqeq: 'off', // 必须使用全等 21 | 'one-var': 'off', // 连续声明 22 | 'no-undef': 'off', // 可以 有未定义的变量 23 | 'no-unused-vars': 'off', // 能有声明后未被使用的变量或参数 24 | singleQuote: 'off', 25 | 'no-template-curly-in-string': 'off' 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /blog-web/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /blog-web/README.md: -------------------------------------------------------------------------------- 1 | # blog-web 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | npm run lint 21 | ``` 22 | 23 | ### Customize configuration 24 | See [Configuration Reference](https://cli.vuejs.org/config/). 25 | -------------------------------------------------------------------------------- /blog-web/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /blog-web/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "blog-web", 3 | "version": "0.1.0", 4 | "private": true, 5 | "scripts": { 6 | "serve": "vue-cli-service serve", 7 | "build": "vue-cli-service build", 8 | "lint": "vue-cli-service lint" 9 | }, 10 | "dependencies": { 11 | "ant-design-vue": "^1.6.4", 12 | "axios": "^0.19.2", 13 | "core-js": "^3.6.5", 14 | "highlight.js": "^10.1.2", 15 | "quill": "^1.3.7", 16 | "vue": "^2.6.11", 17 | "vue-quill-editor": "^3.0.6", 18 | "vue-router": "^3.2.0", 19 | "vuex": "^3.5.1" 20 | }, 21 | "devDependencies": { 22 | "@vue/cli-plugin-babel": "~4.4.0", 23 | "@vue/cli-plugin-eslint": "~4.4.0", 24 | "@vue/cli-plugin-router": "~4.4.0", 25 | "@vue/cli-service": "~4.4.0", 26 | "@vue/eslint-config-standard": "^5.1.2", 27 | "babel-eslint": "^10.1.0", 28 | "eslint": "^6.7.2", 29 | "eslint-plugin-import": "^2.20.2", 30 | "eslint-plugin-node": "^11.1.0", 31 | "eslint-plugin-promise": "^4.2.1", 32 | "eslint-plugin-standard": "^4.0.0", 33 | "eslint-plugin-vue": "^6.2.2", 34 | "node-sass": "^4.14.1", 35 | "sass-loader": "^9.0.2", 36 | "vue-template-compiler": "^2.6.11" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /blog-web/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/blog-web/public/favicon.ico -------------------------------------------------------------------------------- /blog-web/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | <%= htmlWebpackPlugin.options.title %> 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /blog-web/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /blog-web/src/api/comment.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function saveComment(visitorNickname, visitorEmail, content, articleId) { 4 | return request({ 5 | url: '/web/comment', 6 | method: 'post', 7 | data: { 8 | visitorNickname, 9 | visitorEmail, 10 | content, 11 | articleId, 12 | createTime: Date.now(), 13 | enabled: true 14 | } 15 | }) 16 | } 17 | 18 | export function getCommentsByArticleId(id) { 19 | return request({ 20 | url: `/web/comment/${id}`, 21 | method: 'get' 22 | }) 23 | } -------------------------------------------------------------------------------- /blog-web/src/api/user.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getUserDetail() { 4 | return request({ 5 | url: '/web/user', 6 | method: 'get' 7 | }) 8 | } -------------------------------------------------------------------------------- /blog-web/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/blog-web/src/assets/logo.png -------------------------------------------------------------------------------- /blog-web/src/assets/null.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/blog-web/src/assets/null.png -------------------------------------------------------------------------------- /blog-web/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | 6 | import '@/styles/index.scss' 7 | import '@/plugins/ant-design-vue' 8 | 9 | Vue.config.productionTip = false 10 | 11 | new Vue({ 12 | router, 13 | store, 14 | render: h => h(App) 15 | }).$mount('#app') 16 | -------------------------------------------------------------------------------- /blog-web/src/plugins/ant-design-vue.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import { 3 | Button, 4 | Layout, 5 | Input, 6 | Icon, 7 | Tag, 8 | Pagination, 9 | Skeleton, 10 | FormModel, 11 | Comment, 12 | message 13 | } from 'ant-design-vue'; 14 | import 'ant-design-vue/dist/antd.css'; 15 | 16 | Vue.use(Button) 17 | Vue.use(Layout) 18 | Vue.use(Input) 19 | Vue.use(Icon) 20 | Vue.use(Tag) 21 | Vue.use(Pagination) 22 | Vue.use(Skeleton) 23 | Vue.use(FormModel) 24 | Vue.use(Comment) 25 | Vue.prototype.$message = message 26 | -------------------------------------------------------------------------------- /blog-web/src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import VueRouter from 'vue-router' 3 | 4 | Vue.use(VueRouter) 5 | 6 | const routes = [{ 7 | path: '/', 8 | name: 'Home', 9 | redirect: '/article', 10 | component: () => import('@/views/home/index'), 11 | children: [ 12 | { 13 | path: '/article', 14 | name: 'Article', 15 | component: () => import('@/views/article/index') 16 | }, 17 | { 18 | path: '/article/:id', 19 | name: 'ArticleDetail', 20 | component: () => import('@/views/articleDetail/index') 21 | } 22 | ] 23 | }] 24 | 25 | const router = new VueRouter({ 26 | routes 27 | }) 28 | 29 | export default router 30 | -------------------------------------------------------------------------------- /blog-web/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | const store = new Vuex.Store({ 7 | state: { 8 | status: 'search', 9 | queryParam: '' 10 | }, 11 | mutations: { 12 | edit (state, payload) { 13 | const { 14 | status, 15 | queryParam 16 | } = payload 17 | state.status = status 18 | state.queryParam = queryParam 19 | } 20 | } 21 | }) 22 | 23 | export default store 24 | -------------------------------------------------------------------------------- /blog-web/src/styles/reset.scss: -------------------------------------------------------------------------------- 1 | body { 2 | 3 | h1, 4 | h2, 5 | h3, 6 | h4, 7 | h5, 8 | h6, 9 | p { 10 | margin: 0; 11 | } 12 | 13 | ul { 14 | list-style: none; 15 | margin: 0; 16 | padding: 0; 17 | } 18 | } -------------------------------------------------------------------------------- /blog-web/src/utils/escapeStringAndHtml.js: -------------------------------------------------------------------------------- 1 | export function escapeStringToHtml(content) { 2 | if (content == null) return content 3 | content = content.replace(/</g, '<'); 4 | content = content.replace(/>/g, '>'); 5 | return content; 6 | } 7 | 8 | export function escapeHtmlToString(html) { 9 | if (html == null) return html 10 | html = html.replace(//g, '>'); 12 | return html; 13 | } 14 | -------------------------------------------------------------------------------- /blog-web/src/utils/request.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios' 2 | import { 3 | message 4 | } from 'ant-design-vue' 5 | 6 | // 创建axios实例 7 | const service = axios.create({ 8 | baseURL: 'http://127.0.0.1:8081/blog/v1/', 9 | timeout: 15000 10 | }) 11 | 12 | // response 拦截器 13 | service.interceptors.response.use( 14 | response => { 15 | // code 为非200是抛错 16 | const res = response.data 17 | if (res.code !== 200) { 18 | // 未登录或token过期 19 | if (res.code === 400) { 20 | console.log('400: ', res.msg) 21 | message.error(res.msg); 22 | } else { 23 | console.log('500: ', res.msg) 24 | message.error('未知错误,请联系管理员'); 25 | } 26 | } else { 27 | return response.data 28 | } 29 | }, error => { 30 | return Promise.reject(error) 31 | }) 32 | 33 | export default service 34 | -------------------------------------------------------------------------------- /blog-web/src/views/article/components/Header.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 37 | -------------------------------------------------------------------------------- /blog-web/src/views/article/index.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /blog-web/src/views/home/components/Content.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /blog-web/src/views/home/components/Header.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 30 | 31 | 47 | -------------------------------------------------------------------------------- /blog-web/src/views/home/index.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 25 | 26 | 37 | -------------------------------------------------------------------------------- /blog-web/vue.config.js: -------------------------------------------------------------------------------- 1 | // vue.config.js 2 | module.exports = { 3 | devServer: { 4 | open: true, 5 | port: 8002 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /vblog/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /vblog/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | trim_trailing_whitespace = true 5 | insert_final_newline = true 6 | -------------------------------------------------------------------------------- /vblog/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true 5 | }, 6 | extends: ['plugin:vue/essential', '@vue/standard'], 7 | parserOptions: { 8 | parser: 'babel-eslint' 9 | }, 10 | rules: { 11 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 12 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 13 | 'space-before-function-paren': 'off', // 函数定义时括号前面要不要有空格 14 | 'eol-last': 'off', // 文件以单一的换行符结束 15 | 'no-extra-semi': 'off', // 可以多余的冒号 16 | semi: 'off', // 语句可以不需要分号结尾 17 | eqeqeq: 'off', // 必须使用全等 18 | singleQuote: 'off', 19 | 'no-template-curly-in-string': 'off' 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /vblog/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | pnpm-debug.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /vblog/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 2, 3 | "semi": false, 4 | "singleQuote": true, 5 | "bracketSpacing": true 6 | } -------------------------------------------------------------------------------- /vblog/README.md: -------------------------------------------------------------------------------- 1 | # vblog 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | npm run lint 21 | ``` 22 | 23 | ### Customize configuration 24 | See [Configuration Reference](https://cli.vuejs.org/config/). 25 | -------------------------------------------------------------------------------- /vblog/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /vblog/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/public/favicon.ico -------------------------------------------------------------------------------- /vblog/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 博客后台管理 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 |
20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /vblog/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /vblog/src/api/articleCategoryRef.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getCategoryByArticleId(id) { 4 | return request({ 5 | url: `/assign/category/${id}`, 6 | method: 'get' 7 | }) 8 | } 9 | 10 | export function addCategoryForArticle(articleId, categoryName) { 11 | return request({ 12 | url: '/assign/category', 13 | method: 'post', 14 | data: { 15 | articleId, 16 | categoryName 17 | } 18 | }) 19 | } 20 | -------------------------------------------------------------------------------- /vblog/src/api/comment.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getComments(pageNum, pageSize) { 4 | return request({ 5 | url: '/comment', 6 | method: 'get', 7 | params: { 8 | pageNum, 9 | pageSize 10 | } 11 | }) 12 | } 13 | 14 | export function updateEnabled(id, enabled) { 15 | return request({ 16 | url: '/comment', 17 | method: 'put', 18 | data: { 19 | id, 20 | enabled 21 | } 22 | }) 23 | } 24 | 25 | export function deleteCommentById(id) { 26 | return request({ 27 | url: `/comment/${id}`, 28 | method: 'delete' 29 | }) 30 | } 31 | -------------------------------------------------------------------------------- /vblog/src/api/data.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getRecentlySevenDays() { 4 | return request({ 5 | url: '/web/data/seven', 6 | method: 'get' 7 | }) 8 | } 9 | 10 | export function getCategoryCount() { 11 | return request({ 12 | url: '/web/category', 13 | method: 'get' 14 | }) 15 | } 16 | 17 | export function getCommentCount(pageNum, pageSize) { 18 | return request({ 19 | url: '/web/comment/count', 20 | method: 'get' 21 | }) 22 | } 23 | 24 | export function getCommentsLimitEight() { 25 | return request({ 26 | url: '/web/comment/eight', 27 | method: 'get' 28 | }) 29 | } 30 | 31 | export function getAticleCount() { 32 | return request({ 33 | url: '/web/article/count', 34 | method: 'get' 35 | }) 36 | } -------------------------------------------------------------------------------- /vblog/src/api/log.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getLogs(selectLevel, selectDate, pageNum, pageSize) { 4 | return request({ 5 | url: '/log', 6 | method: 'get', 7 | params: { 8 | level: selectLevel != 'ALL' ? selectLevel : '', 9 | date: selectDate, 10 | pageNum, 11 | pageSize 12 | } 13 | }) 14 | } 15 | 16 | export function getLevels() { 17 | return request({ 18 | url: '/log/level', 19 | method: 'get' 20 | }) 21 | } -------------------------------------------------------------------------------- /vblog/src/api/login.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function login(username, password) { 4 | return request({ 5 | url: '/login', 6 | method: 'post', 7 | data: { 8 | username, 9 | password 10 | } 11 | }) 12 | } 13 | 14 | export function logout() { 15 | return request({ 16 | url: '/logout', 17 | method: 'post' 18 | }) 19 | } 20 | -------------------------------------------------------------------------------- /vblog/src/api/oss.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getpolicy() { 4 | return request({ 5 | url: '/oss/policy', 6 | method: 'get' 7 | }) 8 | } 9 | -------------------------------------------------------------------------------- /vblog/src/api/reply.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function saveReply(content, enabled, commentId) { 4 | return request({ 5 | url: '/reply', 6 | method: 'post', 7 | data: { 8 | content, 9 | enabled, 10 | createTime: Date.now(), 11 | commentId 12 | } 13 | }) 14 | } 15 | 16 | export function updateReply(reply) { 17 | return request({ 18 | url: '/reply', 19 | method: 'put', 20 | data: { 21 | id: reply.id, 22 | content: reply.content, 23 | enabled: reply.enabled 24 | } 25 | }) 26 | } 27 | 28 | export function deleteReplyById(id) { 29 | return request({ 30 | url: `/reply/${id}`, 31 | method: 'delete' 32 | 33 | }) 34 | } 35 | -------------------------------------------------------------------------------- /vblog/src/api/userRoleRef.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getRoleByUserId(id) { 4 | return request({ 5 | url: `/assign/role/${id}`, 6 | method: 'get' 7 | }) 8 | } 9 | 10 | export function addRoleForUser(userId, roleNames) { 11 | return request({ 12 | url: '/assign/role', 13 | method: 'post', 14 | data: { 15 | userId, 16 | roleNames 17 | } 18 | }) 19 | } 20 | -------------------------------------------------------------------------------- /vblog/src/api/uv.js: -------------------------------------------------------------------------------- 1 | import request from '@/utils/request' 2 | 3 | export function getCurrentDay() { 4 | return request({ 5 | url: '/web/uv/current', 6 | method: 'get' 7 | }) 8 | } 9 | 10 | export function getUvAmount() { 11 | return request({ 12 | url: '/web/uv/amount', 13 | method: 'get' 14 | }) 15 | } 16 | -------------------------------------------------------------------------------- /vblog/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/src/assets/logo.png -------------------------------------------------------------------------------- /vblog/src/assets/null.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/src/assets/null.png -------------------------------------------------------------------------------- /vblog/src/assets/write.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/src/assets/write.png -------------------------------------------------------------------------------- /vblog/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import App from './App.vue' 3 | import router from './router' 4 | import store from './store' 5 | import VueRouter from 'vue-router' 6 | 7 | import '@/styles/index.scss' 8 | import '@/plugins/ant-design-vue.js' 9 | 10 | // 解决多次点击同一个菜单出现错误 11 | const originalPush = VueRouter.prototype.push 12 | VueRouter.prototype.push = function push(location) { 13 | return originalPush.call(this, location).catch(err => err) 14 | } 15 | 16 | Vue.config.productionTip = false 17 | 18 | new Vue({ 19 | router, 20 | store, 21 | render: h => h(App) 22 | }).$mount('#app') 23 | -------------------------------------------------------------------------------- /vblog/src/plugins/ant-design-vue.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import { 3 | Button, 4 | Menu, 5 | Layout, 6 | Modal, 7 | Icon, 8 | Dropdown, 9 | Skeleton, 10 | Form, 11 | Input, 12 | Table, 13 | Tag, 14 | Divider, 15 | Switch, 16 | FormModel, 17 | InputNumber, 18 | Select, 19 | DatePicker, 20 | Upload 21 | } from 'ant-design-vue' 22 | import 'ant-design-vue/dist/antd.css' 23 | 24 | Vue.use(Button) 25 | Vue.use(Menu) 26 | Vue.use(Layout) 27 | Vue.use(Modal) 28 | Vue.use(Icon) 29 | Vue.use(Dropdown) 30 | Vue.use(Skeleton) 31 | Vue.use(Form) 32 | Vue.use(Input) 33 | Vue.use(Table) 34 | Vue.use(Tag) 35 | Vue.use(Divider) 36 | Vue.use(Switch) 37 | Vue.use(FormModel) 38 | Vue.use(InputNumber) 39 | Vue.use(Select) 40 | Vue.use(DatePicker) 41 | Vue.use(Upload) 42 | -------------------------------------------------------------------------------- /vblog/src/store/getters.js: -------------------------------------------------------------------------------- 1 | const getters = { 2 | token: state => state.user.token, 3 | avatar: state => state.user.avatar, 4 | username: state => state.user.username, 5 | roles: state => state.user.roles 6 | } 7 | export default getters 8 | -------------------------------------------------------------------------------- /vblog/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import getters from '@/store/getters' 4 | import user from '@/store/modules/user' 5 | 6 | Vue.use(Vuex) 7 | 8 | const store = new Vuex.Store({ 9 | modules: { 10 | user 11 | }, 12 | getters 13 | }) 14 | 15 | export default store 16 | -------------------------------------------------------------------------------- /vblog/src/styles/reset.scss: -------------------------------------------------------------------------------- 1 | body { 2 | 3 | h1, 4 | h2, 5 | h3, 6 | h4, 7 | h5, 8 | h6, 9 | p, 10 | ul, 11 | li { 12 | margin: 0; 13 | } 14 | 15 | ul { 16 | padding: 0; 17 | } 18 | 19 | ul li { 20 | list-style: none; 21 | } 22 | } -------------------------------------------------------------------------------- /vblog/src/utils/auth.js: -------------------------------------------------------------------------------- 1 | import Cookies from 'js-cookie' 2 | 3 | const TokenKey = 'token' 4 | 5 | export function getToken() { 6 | return Cookies.get(TokenKey) 7 | } 8 | 9 | export function setToken(token) { 10 | return Cookies.set(TokenKey, token) 11 | } 12 | 13 | export function removeToken() { 14 | return Cookies.remove(TokenKey) 15 | } 16 | -------------------------------------------------------------------------------- /vblog/src/utils/escapeStringAndHtml.js: -------------------------------------------------------------------------------- 1 | export function escapeStringToHtml(content) { 2 | if (content == null) return content 3 | content = content.replace(/</g, '<'); 4 | content = content.replace(/>/g, '>'); 5 | return content; 6 | } 7 | 8 | export function escapeHtmlToString(html) { 9 | if (html == null) return html 10 | html = html.replace(//g, '>'); 12 | return html; 13 | } 14 | -------------------------------------------------------------------------------- /vblog/src/utils/support.js: -------------------------------------------------------------------------------- 1 | import Cookies from 'js-cookie'; 2 | const SupportKey = 'supportKey'; 3 | export function getSupport() { 4 | return Cookies.get(SupportKey) 5 | } 6 | 7 | export function setSupport(isSupport) { 8 | return Cookies.set(SupportKey, isSupport, { 9 | expires: 3 10 | }) 11 | } 12 | 13 | export function setCookie(key, value, expires) { 14 | return Cookies.set(key, value, { 15 | expires: expires 16 | }) 17 | } 18 | 19 | export function getCookie(key) { 20 | return Cookies.get(key) 21 | } 22 | 23 | export function removeCookie(key) { 24 | return Cookies.remove(key) 25 | } 26 | -------------------------------------------------------------------------------- /vblog/src/views/errors/403.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /vblog/src/views/errors/404.vue: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /vblog/src/views/layout/Layout.vue: -------------------------------------------------------------------------------- 1 | 11 | 31 | 32 | 39 | -------------------------------------------------------------------------------- /vblog/src/views/layout/components/Content.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /vblog/src/views/layout/components/Footer.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /vblog/static/editormd/.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.log 3 | *.pid 4 | *.seed 5 | node_modules/ 6 | .sass-cache/ 7 | research/ 8 | test/ 9 | backup/ 10 | examples/uploads/**/* 11 | *.bat 12 | *.sh 13 | .project 14 | .url 15 | css/*.map -------------------------------------------------------------------------------- /vblog/static/editormd/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "esnext": true, 3 | "bitwise": true, 4 | "camelcase": true, 5 | "curly": true, 6 | "eqeqeq": true, 7 | "immed": true, 8 | "indent": 4, 9 | "latedef": true, 10 | "newcap": true, 11 | "noarg": true, 12 | "quotmark": "double", 13 | "regexp": true, 14 | "undef": true, 15 | "unused": true, 16 | "strict": true, 17 | "trailing": true, 18 | "smarttabs": true, 19 | "white": true 20 | } -------------------------------------------------------------------------------- /vblog/static/editormd/BUGS.md: -------------------------------------------------------------------------------- 1 | #Bugs 2 | 3 | > 说明:删除线表示已经解决。 4 | 5 | ####IE8 6 | 7 | - ~~不能加载;~~ 8 | - flowChart(流程图)、sequenceDiagram(序列图)不支持IE8; 9 | - ~~不支持Markdown转HTML页面解析预览;~~ 10 | 11 | ####IE8 & IE9 & IE10 12 | 13 | - KaTeX会出现解析错误,但不影响程序运行; 14 | 15 | ####Sea.js 16 | 17 | - ~~Raphael.js无法加载;~~ 18 | 19 | ####Require.js 20 | 21 | - ~~CodeMirror编辑器的代码无法高亮;~~ 22 | - ~~sequenceDiagram不支持: `Uncaught TypeError: Cannot call method 'isArray' of undefined.`~~ 23 | -------------------------------------------------------------------------------- /vblog/static/editormd/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 pandao 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /vblog/static/editormd/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "editor.md", 3 | "version": "1.5.0", 4 | "homepage": "https://github.com/pandao/editor.md", 5 | "authors": [ 6 | "Pandao " 7 | ], 8 | "description": "Open source online markdown editor.", 9 | "keywords": [ 10 | "editor.md", 11 | "markdown", 12 | "editor" 13 | ], 14 | "license": "MIT", 15 | "ignore": [ 16 | "**/.*", 17 | "research", 18 | "docs", 19 | "node_modules", 20 | "bower_components", 21 | "test", 22 | "tests" 23 | ] 24 | } 25 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/.gitignore: -------------------------------------------------------------------------------- 1 | logs 2 | *.log 3 | npm-debug.log* 4 | node_modules 5 | .npm 6 | .DS_Store 7 | .sass-cache/ 8 | *.css.map 9 | dist/index.html 10 | dist/styles/ 11 | dist/scripts/ 12 | dist/sitemap.xml 13 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 5.9.0 3 | script: npm run deploy 4 | env: 5 | global: 6 | secure: ERQ+xrt/e/NnY3N4vVoagI4BXax076Imh8ZqD5981+akZlQrITtm8bMTvh1+DA/1aYW5f87pe0GFGbnJ0Q55cBkAhNux+ggnfyitwZMRDHExK6WYdwpi+khiV9sfBJ7q9hrsAcxZdMYCcfJ+JlqctwC/hjJBlW11vSzhUneBUc4= 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/LICENSE.md: -------------------------------------------------------------------------------- 1 | [http://jmblog.mit-license.org/](http://jmblog.mit-license.org/) 2 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "color-themes-for-google-code-prettify", 3 | "description": "The selection of beautiful color themes for Google Code Prettify.", 4 | "main": "", 5 | "authors": [ 6 | "Yoshihide Jimbo" 7 | ], 8 | "license": "MIT", 9 | "keywords": [ 10 | "google", 11 | "code", 12 | "prettify", 13 | "highlight", 14 | "syntax", 15 | "highlight", 16 | "themes" 17 | ], 18 | "homepage": "https://github.com/jmblog/color-themes-for-google-code-prettify", 19 | "ignore": [ 20 | "**/.*", 21 | "node_modules", 22 | "bower_components", 23 | "test", 24 | "tests" 25 | ] 26 | } 27 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes.zip -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-cave-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#19171c;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#efecf4}ol.linenums{margin-top:0;margin-bottom:0;color:#655f6d}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#19171c;list-style-type:decimal}@media screen{.str{color:#2a9292}.kwd{color:#955ae7}.com{color:#655f6d}.typ{color:#576ddb}.lit{color:#aa573c}.pun{color:#efecf4}.opn{color:#efecf4}.clo{color:#efecf4}.tag{color:#be4678}.atn{color:#aa573c}.atv{color:#398bc6}.dec{color:#aa573c}.var{color:#be4678}.fun{color:#576ddb}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-cave-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#efecf4;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#19171c}ol.linenums{margin-top:0;margin-bottom:0;color:#7e7887}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#efecf4;list-style-type:decimal}@media screen{.str{color:#2a9292}.kwd{color:#955ae7}.com{color:#7e7887}.typ{color:#576ddb}.lit{color:#aa573c}.pun{color:#19171c}.opn{color:#19171c}.clo{color:#19171c}.tag{color:#be4678}.atn{color:#aa573c}.atv{color:#398bc6}.dec{color:#aa573c}.var{color:#be4678}.fun{color:#576ddb}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-dune-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#20201d;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#fefbec}ol.linenums{margin-top:0;margin-bottom:0;color:#7d7a68}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#20201d;list-style-type:decimal}@media screen{.str{color:#60ac39}.kwd{color:#b854d4}.com{color:#7d7a68}.typ{color:#6684e1}.lit{color:#b65611}.pun{color:#fefbec}.opn{color:#fefbec}.clo{color:#fefbec}.tag{color:#d73737}.atn{color:#b65611}.atv{color:#1fad83}.dec{color:#b65611}.var{color:#d73737}.fun{color:#6684e1}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-dune-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#fefbec;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#20201d}ol.linenums{margin-top:0;margin-bottom:0;color:#999580}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fefbec;list-style-type:decimal}@media screen{.str{color:#60ac39}.kwd{color:#b854d4}.com{color:#999580}.typ{color:#6684e1}.lit{color:#b65611}.pun{color:#20201d}.opn{color:#20201d}.clo{color:#20201d}.tag{color:#d73737}.atn{color:#b65611}.atv{color:#1fad83}.dec{color:#b65611}.var{color:#d73737}.fun{color:#6684e1}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-estuary-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#22221b;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#f4f3ec}ol.linenums{margin-top:0;margin-bottom:0;color:#6c6b5a}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#22221b;list-style-type:decimal}@media screen{.str{color:#7d9726}.kwd{color:#5f9182}.com{color:#6c6b5a}.typ{color:#36a166}.lit{color:#ae7313}.pun{color:#f4f3ec}.opn{color:#f4f3ec}.clo{color:#f4f3ec}.tag{color:#ba6236}.atn{color:#ae7313}.atv{color:#5b9d48}.dec{color:#ae7313}.var{color:#ba6236}.fun{color:#36a166}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-estuary-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#f4f3ec;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#22221b}ol.linenums{margin-top:0;margin-bottom:0;color:#878573}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#f4f3ec;list-style-type:decimal}@media screen{.str{color:#7d9726}.kwd{color:#5f9182}.com{color:#878573}.typ{color:#36a166}.lit{color:#ae7313}.pun{color:#22221b}.opn{color:#22221b}.clo{color:#22221b}.tag{color:#ba6236}.atn{color:#ae7313}.atv{color:#5b9d48}.dec{color:#ae7313}.var{color:#ba6236}.fun{color:#36a166}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-forest-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#1b1918;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#f1efee}ol.linenums{margin-top:0;margin-bottom:0;color:#766e6b}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#1b1918;list-style-type:decimal}@media screen{.str{color:#7b9726}.kwd{color:#6666ea}.com{color:#766e6b}.typ{color:#407ee7}.lit{color:#df5320}.pun{color:#f1efee}.opn{color:#f1efee}.clo{color:#f1efee}.tag{color:#f22c40}.atn{color:#df5320}.atv{color:#3d97b8}.dec{color:#df5320}.var{color:#f22c40}.fun{color:#407ee7}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-forest-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#f1efee;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#1b1918}ol.linenums{margin-top:0;margin-bottom:0;color:#9c9491}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#f1efee;list-style-type:decimal}@media screen{.str{color:#7b9726}.kwd{color:#6666ea}.com{color:#9c9491}.typ{color:#407ee7}.lit{color:#df5320}.pun{color:#1b1918}.opn{color:#1b1918}.clo{color:#1b1918}.tag{color:#f22c40}.atn{color:#df5320}.atv{color:#3d97b8}.dec{color:#df5320}.var{color:#f22c40}.fun{color:#407ee7}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-heath-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#1b181b;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#f7f3f7}ol.linenums{margin-top:0;margin-bottom:0;color:#776977}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#1b181b;list-style-type:decimal}@media screen{.str{color:#918b3b}.kwd{color:#7b59c0}.com{color:#776977}.typ{color:#516aec}.lit{color:#a65926}.pun{color:#f7f3f7}.opn{color:#f7f3f7}.clo{color:#f7f3f7}.tag{color:#ca402b}.atn{color:#a65926}.atv{color:#159393}.dec{color:#a65926}.var{color:#ca402b}.fun{color:#516aec}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-heath-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#f7f3f7;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#1b181b}ol.linenums{margin-top:0;margin-bottom:0;color:#5a7b8c}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#f7f3f7;list-style-type:decimal}@media screen{.str{color:#918b3b}.kwd{color:#7b59c0}.com{color:#5a7b8c}.typ{color:#516aec}.lit{color:#a65926}.pun{color:#1b181b}.opn{color:#1b181b}.clo{color:#1b181b}.tag{color:#ca402b}.atn{color:#a65926}.atv{color:#159393}.dec{color:#a65926}.var{color:#ca402b}.fun{color:#516aec}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-lakeside-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#161b1d;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#ebf8ff}ol.linenums{margin-top:0;margin-bottom:0;color:#5a7b8c}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#161b1d;list-style-type:decimal}@media screen{.str{color:#568c3b}.kwd{color:#6b6bb8}.com{color:#5a7b8c}.typ{color:#257fad}.lit{color:#935c25}.pun{color:#ebf8ff}.opn{color:#ebf8ff}.clo{color:#ebf8ff}.tag{color:#d22d72}.atn{color:#935c25}.atv{color:#2d8f6f}.dec{color:#935c25}.var{color:#d22d72}.fun{color:#257fad}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-lakeside-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#ebf8ff;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#161b1d}ol.linenums{margin-top:0;margin-bottom:0;color:#7195a8}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#ebf8ff;list-style-type:decimal}@media screen{.str{color:#568c3b}.kwd{color:#6b6bb8}.com{color:#7195a8}.typ{color:#257fad}.lit{color:#935c25}.pun{color:#161b1d}.opn{color:#161b1d}.clo{color:#161b1d}.tag{color:#d22d72}.atn{color:#935c25}.atv{color:#2d8f6f}.dec{color:#935c25}.var{color:#d22d72}.fun{color:#257fad}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-plateau-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#1b1818;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#f4ecec}ol.linenums{margin-top:0;margin-bottom:0;color:#655d5d}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#1b1818;list-style-type:decimal}@media screen{.str{color:#4b8b8b}.kwd{color:#8464c4}.com{color:#655d5d}.typ{color:#7272ca}.lit{color:#b45a3c}.pun{color:#f4ecec}.opn{color:#f4ecec}.clo{color:#f4ecec}.tag{color:#ca4949}.atn{color:#b45a3c}.atv{color:#5485b6}.dec{color:#b45a3c}.var{color:#ca4949}.fun{color:#7272ca}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-plateau-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#f4ecec;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#1b1818}ol.linenums{margin-top:0;margin-bottom:0;color:#7e7777}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#f4ecec;list-style-type:decimal}@media screen{.str{color:#4b8b8b}.kwd{color:#8464c4}.com{color:#7e7777}.typ{color:#7272ca}.lit{color:#b45a3c}.pun{color:#1b1818}.opn{color:#1b1818}.clo{color:#1b1818}.tag{color:#ca4949}.atn{color:#b45a3c}.atv{color:#5485b6}.dec{color:#b45a3c}.var{color:#ca4949}.fun{color:#7272ca}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-savanna-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#171c19;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#ecf4ee}ol.linenums{margin-top:0;margin-bottom:0;color:#5f6d64}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#171c19;list-style-type:decimal}@media screen{.str{color:#489963}.kwd{color:#55859b}.com{color:#5f6d64}.typ{color:#478c90}.lit{color:#9f713c}.pun{color:#ecf4ee}.opn{color:#ecf4ee}.clo{color:#ecf4ee}.tag{color:#b16139}.atn{color:#9f713c}.atv{color:#1c9aa0}.dec{color:#9f713c}.var{color:#b16139}.fun{color:#478c90}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-savanna-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#ecf4ee;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#171c19}ol.linenums{margin-top:0;margin-bottom:0;color:#78877d}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#ecf4ee;list-style-type:decimal}@media screen{.str{color:#489963}.kwd{color:#55859b}.com{color:#78877d}.typ{color:#478c90}.lit{color:#9f713c}.pun{color:#171c19}.opn{color:#171c19}.clo{color:#171c19}.tag{color:#b16139}.atn{color:#9f713c}.atv{color:#1c9aa0}.dec{color:#9f713c}.var{color:#b16139}.fun{color:#478c90}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-seaside-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#131513;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#f4fbf4}ol.linenums{margin-top:0;margin-bottom:0;color:#687d68}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#131513;list-style-type:decimal}@media screen{.str{color:#29a329}.kwd{color:#ad2bee}.com{color:#687d68}.typ{color:#3d62f5}.lit{color:#87711d}.pun{color:#f4fbf4}.opn{color:#f4fbf4}.clo{color:#f4fbf4}.tag{color:#e6193c}.atn{color:#87711d}.atv{color:#1999b3}.dec{color:#87711d}.var{color:#e6193c}.fun{color:#3d62f5}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-seaside-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#f4fbf4;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#131513}ol.linenums{margin-top:0;margin-bottom:0;color:#809980}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#f4fbf4;list-style-type:decimal}@media screen{.str{color:#29a329}.kwd{color:#ad2bee}.com{color:#809980}.typ{color:#3d62f5}.lit{color:#87711d}.pun{color:#131513}.opn{color:#131513}.clo{color:#131513}.tag{color:#e6193c}.atn{color:#87711d}.atv{color:#1999b3}.dec{color:#87711d}.var{color:#e6193c}.fun{color:#3d62f5}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-sulphurpool-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#202746;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#f5f7ff}ol.linenums{margin-top:0;margin-bottom:0;color:#6b7394}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#202746;list-style-type:decimal}@media screen{.str{color:#ac9739}.kwd{color:#6679cc}.com{color:#6b7394}.typ{color:#3d8fd1}.lit{color:#c76b29}.pun{color:#f5f7ff}.opn{color:#f5f7ff}.clo{color:#f5f7ff}.tag{color:#c94922}.atn{color:#c76b29}.atv{color:#22a2c9}.dec{color:#c76b29}.var{color:#c94922}.fun{color:#3d8fd1}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/atelier-sulphurpool-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#f5f7ff;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#202746}ol.linenums{margin-top:0;margin-bottom:0;color:#202746}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#f5f7ff;list-style-type:decimal}@media screen{.str{color:#ac9739}.kwd{color:#6679cc}.com{color:#202746}.typ{color:#3d8fd1}.lit{color:#c76b29}.pun{color:#202746}.opn{color:#202746}.clo{color:#202746}.tag{color:#c94922}.atn{color:#c76b29}.atv{color:#22a2c9}.dec{color:#c76b29}.var{color:#c94922}.fun{color:#3d8fd1}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/github-v2.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#fff;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#333}ol.linenums{margin-top:0;margin-bottom:0;color:#ccc}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fff;list-style-type:decimal}@media screen{.str{color:#183691}.kwd{color:#a71d5d}.com{color:#969896}.typ{color:#0086b3}.lit{color:#0086b3}.pun{color:#333}.opn{color:#333}.clo{color:#333}.tag{color:navy}.atn{color:#795da3}.atv{color:#183691}.dec{color:#333}.var{color:teal}.fun{color:#900}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/github.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#fff;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#333}ol.linenums{margin-top:0;margin-bottom:0;color:#ccc}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fff;list-style-type:decimal}@media screen{.str{color:#d14}.kwd{color:#333}.com{color:#998}.typ{color:#458}.lit{color:#458}.pun{color:#333}.opn{color:#333}.clo{color:#333}.tag{color:navy}.atn{color:teal}.atv{color:#d14}.dec{color:#333}.var{color:teal}.fun{color:#900}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/hemisu-dark.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#000;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#eee}ol.linenums{margin-top:0;margin-bottom:0;color:#777}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#000;list-style-type:decimal}@media screen{.str{color:#b1d631}.kwd{color:#b1d631}.com{color:#777}.typ{color:#bfa}.lit{color:#9fd3e6}.pun{color:#eee}.opn{color:#eee}.clo{color:#eee}.tag{color:#eee}.atn{color:#b1d631}.atv{color:#bfa}.dec{color:#eee}.var{color:#eee}.fun{color:#9fd3e6}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/hemisu-light.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#fff;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#111}ol.linenums{margin-top:0;margin-bottom:0;color:#999}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fff;list-style-type:decimal}@media screen{.str{color:#739200}.kwd{color:#739200}.com{color:#999}.typ{color:#f05}.lit{color:#538192}.pun{color:#111}.opn{color:#111}.clo{color:#111}.tag{color:#111}.atn{color:#739200}.atv{color:#f05}.dec{color:#111}.var{color:#111}.fun{color:#538192}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/tomorrow-night-blue.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#002451;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#fff}ol.linenums{margin-top:0;margin-bottom:0;color:#7285b7}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#002451;list-style-type:decimal}@media screen{.str{color:#d1f1a9}.kwd{color:#ebbbff}.com{color:#7285b7}.typ{color:#bbdaff}.lit{color:#ffc58f}.pun{color:#fff}.opn{color:#fff}.clo{color:#fff}.tag{color:#ff9da4}.atn{color:#ffc58f}.atv{color:#9ff}.dec{color:#ffc58f}.var{color:#ff9da4}.fun{color:#bbdaff}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/tomorrow-night-bright.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#000;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#eaeaea}ol.linenums{margin-top:0;margin-bottom:0;color:#969896}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#000;list-style-type:decimal}@media screen{.str{color:#b9ca4a}.kwd{color:#c397d8}.com{color:#969896}.typ{color:#7aa6da}.lit{color:#e78c45}.pun{color:#eaeaea}.opn{color:#eaeaea}.clo{color:#eaeaea}.tag{color:#d54e53}.atn{color:#e78c45}.atv{color:#70c0b1}.dec{color:#e78c45}.var{color:#d54e53}.fun{color:#7aa6da}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/tomorrow-night-eighties.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#2d2d2d;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#ccc}ol.linenums{margin-top:0;margin-bottom:0;color:#999}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#2d2d2d;list-style-type:decimal}@media screen{.str{color:#9c9}.kwd{color:#c9c}.com{color:#999}.typ{color:#69c}.lit{color:#f99157}.pun{color:#ccc}.opn{color:#ccc}.clo{color:#ccc}.tag{color:#f2777a}.atn{color:#f99157}.atv{color:#6cc}.dec{color:#f99157}.var{color:#f2777a}.fun{color:#69c}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/tomorrow-night.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#1d1f21;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#c5c8c6}ol.linenums{margin-top:0;margin-bottom:0;color:#969896}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#1d1f21;list-style-type:decimal}@media screen{.str{color:#b5bd68}.kwd{color:#b294bb}.com{color:#969896}.typ{color:#81a2be}.lit{color:#de935f}.pun{color:#c5c8c6}.opn{color:#c5c8c6}.clo{color:#c5c8c6}.tag{color:#c66}.atn{color:#de935f}.atv{color:#8abeb7}.dec{color:#de935f}.var{color:#c66}.fun{color:#81a2be}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/tomorrow.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#fff;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#4d4d4c}ol.linenums{margin-top:0;margin-bottom:0;color:#8e908c}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#fff;list-style-type:decimal}@media screen{.str{color:#718c00}.kwd{color:#8959a8}.com{color:#8e908c}.typ{color:#4271ae}.lit{color:#f5871f}.pun{color:#4d4d4c}.opn{color:#4d4d4c}.clo{color:#4d4d4c}.tag{color:#c82829}.atn{color:#f5871f}.atv{color:#3e999f}.dec{color:#f5871f}.var{color:#c82829}.fun{color:#4271ae}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/tranquil-heart.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#2f3640;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#e6e9ed}ol.linenums{margin-top:0;margin-bottom:0;color:#656d78}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#2f3640;list-style-type:decimal}@media screen{.str{color:#ffce54}.kwd{color:#4fc1e9}.com{color:#656d78}.typ{color:#4fc1e9}.lit{color:#ac92ec}.pun{color:#e6e9ed}.opn{color:#e6e9ed}.clo{color:#e6e9ed}.tag{color:#ed5565}.atn{color:#a0d468}.atv{color:#ffce54}.dec{color:#ac92ec}.var{color:#e6e9ed}.fun{color:#e6e9ed}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/dist/themes/vibrant-ink.min.css: -------------------------------------------------------------------------------- 1 | /*! Color themes for Google Code Prettify | MIT License | github.com/jmblog/color-themes-for-google-code-prettify */ 2 | .prettyprint{background:#000;font-family:Menlo,Bitstream Vera Sans Mono,DejaVu Sans Mono,Monaco,Consolas,monospace;border:0!important}.pln{color:#fff}ol.linenums{margin-top:0;margin-bottom:0;color:#666}li.L0,li.L1,li.L2,li.L3,li.L4,li.L5,li.L6,li.L7,li.L8,li.L9{padding-left:1em;background-color:#000;list-style-type:decimal}@media screen{.str{color:#6f0}.kwd{color:#f60}.com{color:#93c}.typ{color:#458}.lit{color:#458}.pun{color:#fff}.opn{color:#fff}.clo{color:#fff}.tag{color:#fff}.atn{color:#9c9}.atv{color:#6f0}.dec{color:#fff}.var{color:#fff}.fun{color:#fc0}} -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/sitemap.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | https://jmblog.github.io/color-themes-for-google-code-prettify/ 5 | 6 | 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/base/_headings.scss: -------------------------------------------------------------------------------- 1 | h1, 2 | h2, 3 | h3, 4 | h4, 5 | h5, 6 | h6 { 7 | font-weight: 400; 8 | 9 | small { 10 | display: block; 11 | margin-top: 1em; 12 | font-size: .6em; 13 | } 14 | } 15 | 16 | h2 { 17 | font-size: 1.8rem; 18 | } 19 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/base/_links.scss: -------------------------------------------------------------------------------- 1 | a { 2 | color: $color-link; 3 | text-decoration: underline; 4 | 5 | &:focus, 6 | &:hover { 7 | color: darken($color-link, 15%); 8 | text-decoration: none; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/base/_page.scss: -------------------------------------------------------------------------------- 1 | html { 2 | font-size: $font-size-root; 3 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 4 | } 5 | 6 | body { 7 | font-family: $font-family-sans-serif; 8 | font-size: $font-size-base; 9 | line-height: 1.5; 10 | color: $color-text; 11 | background-color: #fff; 12 | font-smoothing: antialiased; 13 | } 14 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/base/_paragraphs.scss: -------------------------------------------------------------------------------- 1 | p { 2 | margin: 0em 0em 1em; 3 | line-height: 1.4285em; 4 | } 5 | 6 | p:first-child { 7 | margin-top: 0em; 8 | } 9 | 10 | p:last-child { 11 | margin-bottom: 0em; 12 | } 13 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/base/_typography.scss: -------------------------------------------------------------------------------- 1 | pre { 2 | margin: 0; 3 | } 4 | 5 | code, 6 | kbd, 7 | pre, 8 | samp { 9 | font-family: $font-family-monospace; 10 | } 11 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/_getting-started.scss: -------------------------------------------------------------------------------- 1 | .getting-started { 2 | code { 3 | display: inline-block; 4 | width: 100%; 5 | text-align: left; 6 | background-color: $base06; 7 | padding: 1em 1.5em; 8 | border-radius: 3px; 9 | 10 | @include media-breakpoint-up(sm) { 11 | & { 12 | width: 36em; 13 | } 14 | } 15 | 16 | &.-shell { 17 | &:before { 18 | content: '$'; 19 | margin-right: 1em; 20 | color: $base04; 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/_list.scss: -------------------------------------------------------------------------------- 1 | .list li { 2 | margin-bottom: .7em; 3 | } 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/_segment.scss: -------------------------------------------------------------------------------- 1 | .segment { 2 | padding: 3em 0; 3 | background-color: #fff; 4 | 5 | &.-striped { 6 | background-color: $base07; 7 | } 8 | 9 | h2 { 10 | margin-bottom: 2em; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/_tabs.scss: -------------------------------------------------------------------------------- 1 | .tabs { 2 | display: none; 3 | 4 | @include media-breakpoint-up(sm) { 5 | & { 6 | display: inline-block; 7 | margin-bottom: 3em; 8 | 9 | .tab:first-child { 10 | border-top-left-radius: .3rem; 11 | border-bottom-left-radius: .3rem; 12 | margin-left: 0; 13 | } 14 | 15 | .tab:last-child { 16 | border-top-right-radius: .3rem; 17 | border-bottom-right-radius: .3rem; 18 | } 19 | 20 | .tab { 21 | display: inline-block; 22 | padding: .5em 2em; 23 | text-decoration: none; 24 | color: $color-magnetic-blue; 25 | background-color: #fff; 26 | box-shadow: 0 0 0 2px $color-magnetic-blue inset !important; 27 | margin-left: -2px; 28 | 29 | &:hover { 30 | color: #fff; 31 | background-color: lighten($color-magnetic-blue, 10%); 32 | } 33 | 34 | &.-selected { 35 | color: #fff; 36 | background-color: $color-magnetic-blue; 37 | } 38 | } 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/octicons/LICENSE.txt: -------------------------------------------------------------------------------- 1 | (c) 2012-2016 GitHub 2 | 3 | When using the GitHub logos, be sure to follow the GitHub logo guidelines (https://github.com/logos) 4 | 5 | Font License: SIL OFL 1.1 (http://scripts.sil.org/OFL) 6 | Applies to all font files 7 | 8 | Code License: MIT (http://choosealicense.com/licenses/mit/) 9 | Applies to all other files 10 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/octicons/README.md: -------------------------------------------------------------------------------- 1 | If you intend to install Octicons locally, install `octicons-local.ttf`. It should appear as “github-octicons” in your font list. It is specially designed not to conflict with GitHub's web fonts. 2 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/octicons/octicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/octicons/octicons.eot -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/octicons/octicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/octicons/octicons.ttf -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/octicons/octicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/components/octicons/octicons.woff -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/generic/_reboot.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Reset the box-sizing 3 | // 4 | 5 | html { 6 | box-sizing: border-box; 7 | } 8 | 9 | *, 10 | *::before, 11 | *::after { 12 | box-sizing: inherit; 13 | } 14 | 15 | 16 | // 17 | // Make viewport responsive 18 | // 19 | 20 | @at-root { 21 | @-moz-viewport { width: device-width; } 22 | @-ms-viewport { width: device-width; } 23 | @-o-viewport { width: device-width; } 24 | @-webkit-viewport { width: device-width; } 25 | @viewport { width: device-width; } 26 | } 27 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/main.scss: -------------------------------------------------------------------------------- 1 | 2 | 3 | // Settings: Global variables, config swithces 4 | // -------------------------------------------------- 5 | @import "settings/**/*.scss"; 6 | 7 | // Tools: Default mixins and functions 8 | // -------------------------------------------------- 9 | @import "tools/**/*.scss"; 10 | 11 | // Generic: Ground-zero styles (normalize, reset, box-sizing) 12 | // -------------------------------------------------- 13 | @import "generic/normalize"; 14 | @import "generic/reboot"; 15 | 16 | // Base: Unclassed HTML elements (type selectors) 17 | // -------------------------------------------------- 18 | @import "base/**/*.scss"; 19 | 20 | // Objects: Cosmetic-free design patterns 21 | // -------------------------------------------------- 22 | @import "objects/**/*.scss"; 23 | 24 | // Components: Desinged components, chunks of UI 25 | // -------------------------------------------------- 26 | @import "components/**/*.scss"; 27 | 28 | // Trumps: Helpers and overrides 29 | // -------------------------------------------------- 30 | @import "trumps/**/*.scss"; 31 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/objects/_container.scss: -------------------------------------------------------------------------------- 1 | .container { 2 | display: block; 3 | width: 90%; 4 | max-width: 980px; 5 | margin: 0 auto; 6 | 7 | > * { 8 | margin-top: 0; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/settings/_colors.scss: -------------------------------------------------------------------------------- 1 | // Base16 color schemes 2 | // https://github.com/chriskempson/base16 3 | $base00: #181818; 4 | $base01: #282828; 5 | $base02: #383838; 6 | $base03: #585858; 7 | $base04: #b8b8b8; 8 | $base05: #d8d8d8; 9 | $base06: #e8e8e8; 10 | $base07: #f8f8f8; 11 | $base08: #ab4642; 12 | $base09: #dc9656; 13 | $base0a: #f7ca88; 14 | $base0b: #a1b56c; 15 | $base0c: #86c1b9; 16 | $base0d: #7cafc2; 17 | $base0e: #ba8baf; 18 | $base0f: #a16946; 19 | 20 | $color-magnetic-blue: #26a7c3; 21 | 22 | $color-text: $base00; 23 | $color-border: $base07; 24 | $color-link: $color-magnetic-blue; 25 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/settings/_variables.scss: -------------------------------------------------------------------------------- 1 | $font-size-root: 16px; 2 | $font-size-base: 1rem; 3 | $font-family-sans-serif: 'Noto Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; 4 | $font-family-monospace: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace; 5 | 6 | $octicons-font-path: 'octicons/'; 7 | 8 | $link-transition-duration: .1s; 9 | $link-transition-timing-function: cubic-bezier(0.645, 0.045, 0.355, 1); 10 | 11 | $grid-breakpoints: ( 12 | // Extra small screen / phone 13 | xs: 0, 14 | // Small screen / phone 15 | sm: 34em, 16 | // Medium screen / tablet 17 | md: 48em, 18 | // Large screen / desktop 19 | lg: 62em, 20 | // Extra large screen / wide desktop 21 | xl: 75em 22 | ) !default; 23 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-cave-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-cave-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-cave-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-cave-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-cave-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-cave-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-dune-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-dune-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-dune-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-dune-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-dune-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-dune-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-estuary-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-estuary-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-estuary-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-estuary-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-estuary-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-estuary-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-forest-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-forest-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-forest-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-forest-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-forest-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-forest-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-heath-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-heath-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-heath-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-heath-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-heath-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-heath-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-lakeside-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-lakeside-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-lakeside-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-lakeside-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-lakeside-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-lakeside-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-plateau-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-plateau-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-plateau-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-plateau-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-plateau-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-plateau-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-savanna-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-savanna-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-savanna-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-savanna-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-savanna-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-savanna-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-seaside-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-seaside-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-seaside-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-seaside-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/atelier-seaside-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-seaside-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-sulphurpool-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/_atelier-sulphurpool-dark"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-sulphurpool-dark { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/atelier-sulphurpool-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/_atelier-sulphurpool-light"; 2 | @import "../../themes/base"; 3 | 4 | #atelier-sulphurpool-light { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/github-v2.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/github-v2"; 2 | @import "../../themes/base"; 3 | 4 | #github-v2 { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/github.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/github"; 2 | @import "../../themes/base"; 3 | 4 | #github { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/hemisu-dark.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/hemisu"; 2 | @import "../../themes/colors/hemisu-dark"; 3 | @import "../../themes/base-hemisu"; 4 | @import "../../themes/base"; 5 | 6 | #hemisu-dark { 7 | @include prettyprint(); 8 | } 9 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/hemisu-light.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/hemisu"; 2 | @import "../../themes/colors/hemisu-light"; 3 | @import "../../themes/base-hemisu"; 4 | @import "../../themes/base"; 5 | 6 | #hemisu-light { 7 | @include prettyprint(); 8 | } 9 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/tomorrow-night-blue.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/tomorrow-night-blue"; 2 | @import "../../themes/base-tomorrow"; 3 | @import "../../themes/base"; 4 | 5 | #tomorrow-night-blue { 6 | @include prettyprint(); 7 | } 8 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/tomorrow-night-bright.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/tomorrow-night-bright"; 2 | @import "../../themes/base-tomorrow"; 3 | @import "../../themes/base"; 4 | 5 | #tomorrow-night-bright { 6 | @include prettyprint(); 7 | } 8 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/tomorrow-night-eighties.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/tomorrow-night-eighties"; 2 | @import "../../themes/base-tomorrow"; 3 | @import "../../themes/base"; 4 | 5 | #tomorrow-night-eighties { 6 | @include prettyprint(); 7 | } 8 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/tomorrow-night.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/tomorrow-night"; 2 | @import "../../themes/base-tomorrow"; 3 | @import "../../themes/base"; 4 | 5 | #tomorrow-night { 6 | @include prettyprint(); 7 | } 8 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/tomorrow.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/tomorrow"; 2 | @import "../../themes/base-tomorrow"; 3 | @import "../../themes/base"; 4 | 5 | #tomorrow { 6 | @include prettyprint(); 7 | } 8 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/tranquil-heart.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/tranquil-heart"; 2 | @import "../../themes/base"; 3 | 4 | #tranquil-heart { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/theme-previews/vibrant-ink.scss: -------------------------------------------------------------------------------- 1 | @import "../../themes/colors/vibrant-ink"; 2 | @import "../../themes/base"; 3 | 4 | #vibrant-ink { 5 | @include prettyprint(); 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/trumps/_animation.scss: -------------------------------------------------------------------------------- 1 | @keyframes fadeInUp { 2 | from { 3 | opacity: 0; 4 | transform: translateY(10%); 5 | } 6 | 7 | to { 8 | opacity: 1; 9 | transform: none; 10 | } 11 | } 12 | 13 | .fadeInUp { 14 | animation-name: fadeInUp; 15 | animation-duration: .8s; 16 | animation-fill-mode: both; 17 | } 18 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/styles/trumps/_text.scss: -------------------------------------------------------------------------------- 1 | .u-text-center { 2 | text-align: center !important; 3 | } 4 | 5 | .u-text-muted { 6 | color: $base04 !important; 7 | } 8 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/_base-hemisu.scss: -------------------------------------------------------------------------------- 1 | $string: $accent2; 2 | $keyword: $accent2; 3 | $type: $accent3; 4 | $literal: $accent1; 5 | $punctuation: $foreground; 6 | $open_bracket: $foreground; 7 | $close_bracket: $foreground; 8 | $markup_tag: $foreground; 9 | $markup_attr_n: $accent2; 10 | $markup_attr_v: $accent3; 11 | $declaration: $foreground; 12 | $variable: $foreground; 13 | $function: $accent1; 14 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/_base-tomorrow.scss: -------------------------------------------------------------------------------- 1 | $string: $green; 2 | $keyword: $purple; 3 | $type: $blue; 4 | $literal: $orange; 5 | $punctuation: $foreground; 6 | $open_bracket: $foreground; 7 | $close_bracket: $foreground; 8 | $markup_tag: $red; 9 | $markup_attr_n: $orange; 10 | $markup_attr_v: $aqua; 11 | $declaration: $orange; 12 | $function: $blue; 13 | $variable: $red; 14 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-cave-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-cave-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-cave-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-cave-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-dune-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-dune-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-dune-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-dune-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-estuary-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-estuary-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-estuary-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-estuary-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-forest-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-forest-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-forest-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-forest-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-heath-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-heath-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-heath-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-heath-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-lakeside-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-lakeside-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-lakeside-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/atelier-lakeside-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-plateau-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/_atelier-plateau-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-plateau-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/_atelier-plateau-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-savanna-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/_atelier-savanna-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-savanna-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/_atelier-savanna-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-seaside-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/_atelier-seaside-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-seaside-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/_atelier-seaside-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-sulphurpool-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/_atelier-sulphurpool-dark"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/atelier-sulphurpool-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/_atelier-sulphurpool-light"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-cave-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #19171c; 2 | $foreground: #efecf4; 3 | $string: #2a9292; 4 | $keyword: #955ae7; 5 | $comment: #655f6d; 6 | $type: #576ddb; 7 | $literal: #aa573c; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #be4678; 12 | $markup_attr_n: #aa573c; 13 | $markup_attr_v: #398bc6; 14 | $declaration: #aa573c; 15 | $variable: #be4678; 16 | $function: #576ddb; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-cave-light.scss: -------------------------------------------------------------------------------- 1 | $background: #efecf4; 2 | $foreground: #19171c; 3 | $string: #2a9292; 4 | $keyword: #955ae7; 5 | $comment: #7e7887; 6 | $type: #576ddb; 7 | $literal: #aa573c; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #be4678; 12 | $markup_attr_n: #aa573c; 13 | $markup_attr_v: #398bc6; 14 | $declaration: #aa573c; 15 | $variable: #be4678; 16 | $function: #576ddb; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-dune-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #20201d; 2 | $foreground: #fefbec; 3 | $string: #60ac39; 4 | $keyword: #b854d4; 5 | $comment: #7d7a68; 6 | $type: #6684e1; 7 | $literal: #b65611; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #d73737; 12 | $markup_attr_n: #b65611; 13 | $markup_attr_v: #1fad83; 14 | $declaration: #b65611; 15 | $variable: #d73737; 16 | $function: #6684e1; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-dune-light.scss: -------------------------------------------------------------------------------- 1 | $background: #fefbec; 2 | $foreground: #20201d; 3 | $string: #60ac39; 4 | $keyword: #b854d4; 5 | $comment: #999580; 6 | $type: #6684e1; 7 | $literal: #b65611; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #d73737; 12 | $markup_attr_n: #b65611; 13 | $markup_attr_v: #1fad83; 14 | $declaration: #b65611; 15 | $variable: #d73737; 16 | $function: #6684e1; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-estuary-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #22221b; 2 | $foreground: #f4f3ec; 3 | $string: #7d9726; 4 | $keyword: #5f9182; 5 | $comment: #6c6b5a; 6 | $type: #36a166; 7 | $literal: #ae7313; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #ba6236; 12 | $markup_attr_n: #ae7313; 13 | $markup_attr_v: #5b9d48; 14 | $declaration: #ae7313; 15 | $variable: #ba6236; 16 | $function: #36a166; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-estuary-light.scss: -------------------------------------------------------------------------------- 1 | $background: #f4f3ec; 2 | $foreground: #22221b; 3 | $string: #7d9726; 4 | $keyword: #5f9182; 5 | $comment: #878573; 6 | $type: #36a166; 7 | $literal: #ae7313; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #ba6236; 12 | $markup_attr_n: #ae7313; 13 | $markup_attr_v: #5b9d48; 14 | $declaration: #ae7313; 15 | $variable: #ba6236; 16 | $function: #36a166; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-forest-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #1b1918; 2 | $foreground: #f1efee; 3 | $string: #7b9726; 4 | $keyword: #6666ea; 5 | $comment: #766e6b; 6 | $type: #407ee7; 7 | $literal: #df5320; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #f22c40; 12 | $markup_attr_n: #df5320; 13 | $markup_attr_v: #3d97b8; 14 | $declaration: #df5320; 15 | $variable: #f22c40; 16 | $function: #407ee7; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-forest-light.scss: -------------------------------------------------------------------------------- 1 | $background: #f1efee; 2 | $foreground: #1b1918; 3 | $string: #7b9726; 4 | $keyword: #6666ea; 5 | $comment: #9c9491; 6 | $type: #407ee7; 7 | $literal: #df5320; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #f22c40; 12 | $markup_attr_n: #df5320; 13 | $markup_attr_v: #3d97b8; 14 | $declaration: #df5320; 15 | $variable: #f22c40; 16 | $function: #407ee7; 17 | $linenums: $comment; 18 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-heath-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #1b181b; 2 | $foreground: #f7f3f7; 3 | $string: #918b3b; 4 | $keyword: #7b59c0; 5 | $comment: #776977; 6 | $type: #516aec; 7 | $literal: #a65926; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #ca402b; 12 | $markup_attr_n: #a65926; 13 | $markup_attr_v: #159393; 14 | $declaration: #a65926; 15 | $variable: #ca402b; 16 | $function: #516aec; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-heath-light.scss: -------------------------------------------------------------------------------- 1 | $background: #f7f3f7; 2 | $foreground: #1b181b; 3 | $string: #918b3b; 4 | $keyword: #7b59c0; 5 | $comment: #5a7b8c; 6 | $type: #516aec; 7 | $literal: #a65926; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #ca402b; 12 | $markup_attr_n: #a65926; 13 | $markup_attr_v: #159393; 14 | $declaration: #a65926; 15 | $variable: #ca402b; 16 | $function: #516aec; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-lakeside-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #161b1d; 2 | $foreground: #ebf8ff; 3 | $string: #568c3b; 4 | $keyword: #6b6bb8; 5 | $comment: #5a7b8c; 6 | $type: #257fad; 7 | $literal: #935c25; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #d22d72; 12 | $markup_attr_n: #935c25; 13 | $markup_attr_v: #2d8f6f; 14 | $declaration: #935c25; 15 | $variable: #d22d72; 16 | $function: #257fad; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-lakeside-light.scss: -------------------------------------------------------------------------------- 1 | $background: #ebf8ff; 2 | $foreground: #161b1d; 3 | $string: #568c3b; 4 | $keyword: #6b6bb8; 5 | $comment: #7195a8; 6 | $type: #257fad; 7 | $literal: #935c25; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #d22d72; 12 | $markup_attr_n: #935c25; 13 | $markup_attr_v: #2d8f6f; 14 | $declaration: #935c25; 15 | $variable: #d22d72; 16 | $function: #257fad; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-plateau-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #1b1818; 2 | $foreground: #f4ecec; 3 | $string: #4b8b8b; 4 | $keyword: #8464c4; 5 | $comment: #655d5d; 6 | $type: #7272ca; 7 | $literal: #b45a3c; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #ca4949; 12 | $markup_attr_n: #b45a3c; 13 | $markup_attr_v: #5485b6; 14 | $declaration: #b45a3c; 15 | $variable: #ca4949; 16 | $function: #7272ca; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-plateau-light.scss: -------------------------------------------------------------------------------- 1 | $background: #f4ecec; 2 | $foreground: #1b1818; 3 | $string: #4b8b8b; 4 | $keyword: #8464c4; 5 | $comment: #7e7777; 6 | $type: #7272ca; 7 | $literal: #b45a3c; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #ca4949; 12 | $markup_attr_n: #b45a3c; 13 | $markup_attr_v: #5485b6; 14 | $declaration: #b45a3c; 15 | $variable: #ca4949; 16 | $function: #7272ca; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-savanna-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #171c19; 2 | $foreground: #ecf4ee; 3 | $string: #489963; 4 | $keyword: #55859b; 5 | $comment: #5f6d64; 6 | $type: #478c90; 7 | $literal: #9f713c; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #b16139; 12 | $markup_attr_n: #9f713c; 13 | $markup_attr_v: #1c9aa0; 14 | $declaration: #9f713c; 15 | $variable: #b16139; 16 | $function: #478c90; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-savanna-light.scss: -------------------------------------------------------------------------------- 1 | $background: #ecf4ee; 2 | $foreground: #171c19; 3 | $string: #489963; 4 | $keyword: #55859b; 5 | $comment: #78877d; 6 | $type: #478c90; 7 | $literal: #9f713c; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #b16139; 12 | $markup_attr_n: #9f713c; 13 | $markup_attr_v: #1c9aa0; 14 | $declaration: #9f713c; 15 | $variable: #b16139; 16 | $function: #478c90; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-seaside-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #131513; 2 | $foreground: #f4fbf4; 3 | $string: #29a329; 4 | $keyword: #ad2bee; 5 | $comment: #687d68; 6 | $type: #3d62f5; 7 | $literal: #87711d; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #e6193c; 12 | $markup_attr_n: #87711d; 13 | $markup_attr_v: #1999b3; 14 | $declaration: #87711d; 15 | $variable: #e6193c; 16 | $function: #3d62f5; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-seaside-light.scss: -------------------------------------------------------------------------------- 1 | $background: #f4fbf4; 2 | $foreground: #131513; 3 | $string: #29a329; 4 | $keyword: #ad2bee; 5 | $comment: #809980; 6 | $type: #3d62f5; 7 | $literal: #87711d; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #e6193c; 12 | $markup_attr_n: #87711d; 13 | $markup_attr_v: #1999b3; 14 | $declaration: #87711d; 15 | $variable: #e6193c; 16 | $function: #3d62f5; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-sulphurpool-dark.scss: -------------------------------------------------------------------------------- 1 | $background: #202746; 2 | $foreground: #f5f7ff; 3 | $string: #ac9739; 4 | $keyword: #6679cc; 5 | $comment: #6b7394; 6 | $type: #3d8fd1; 7 | $literal: #c76b29; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #c94922; 12 | $markup_attr_n: #c76b29; 13 | $markup_attr_v: #22a2c9; 14 | $declaration: #c76b29; 15 | $variable: #c94922; 16 | $function: #3d8fd1; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_atelier-sulphurpool-light.scss: -------------------------------------------------------------------------------- 1 | $background: #f5f7ff; 2 | $foreground: #202746; 3 | $string: #ac9739; 4 | $keyword: #6679cc; 5 | $comment: #202746; 6 | $type: #3d8fd1; 7 | $literal: #c76b29; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #c94922; 12 | $markup_attr_n: #c76b29; 13 | $markup_attr_v: #22a2c9; 14 | $declaration: #c76b29; 15 | $variable: #c94922; 16 | $function: #3d8fd1; 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_github-v2.scss: -------------------------------------------------------------------------------- 1 | $background: #fff; 2 | $foreground: #333; 3 | $string: #183691; 4 | $keyword: #a71d5d; 5 | $comment: #969896; 6 | $type: #0086b3; 7 | $literal: #0086b3; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #000080; 12 | $markup_attr_n: #795da3; 13 | $markup_attr_v: #183691; 14 | $declaration: $foreground; 15 | $variable: #008080; 16 | $function: #900; 17 | $linenums: lighten($foreground, 60%); 18 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_github.scss: -------------------------------------------------------------------------------- 1 | $background: #fff; 2 | $foreground: #333; 3 | $string: #d14; 4 | $keyword: $foreground; 5 | $comment: #998; 6 | $type: #458; 7 | $literal: #458; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #000080; 12 | $markup_attr_n: #008080; 13 | $markup_attr_v: #d14; 14 | $declaration: $foreground; 15 | $variable: #008080; 16 | $function: #900; 17 | $linenums: lighten($foreground, 60%); 18 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_hemisu-dark.scss: -------------------------------------------------------------------------------- 1 | $background: $black; 2 | $foreground: $almostWhite; 3 | $comment: $middleDarkGrey; 4 | 5 | $accent1: $middleLightBlue; 6 | $accent2: $middleLightGreen; 7 | $accent3: $lightGreen; 8 | $accent4: $lightTan; 9 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_hemisu-light.scss: -------------------------------------------------------------------------------- 1 | $background: $white; 2 | $foreground: $almostBlack; 3 | $comment: $middleLightGrey; 4 | 5 | $accent1: $middleDarkBlue; 6 | $accent2: $middleDarkGreen; 7 | $accent3: $middleDarkPink; 8 | $accent4: $darkTan; 9 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_hemisu.scss: -------------------------------------------------------------------------------- 1 | $black: #000000; 2 | $white: #FFFFFF; 3 | $almostWhite: #EEEEEE; 4 | $almostBlack: #111111; 5 | $middleDarkGrey: #777777; 6 | $middleLightGrey: #999999; 7 | $lightGrey: #BBBBBB; 8 | $darkGrey: #444444; 9 | 10 | $darkPink: #63001C; 11 | $middleDarkPink: #FF0055; 12 | $middleLightPink: #D65E76; 13 | $lightPink: #FFAFAF; 14 | 15 | $darkBlue: #005F87; 16 | $middleDarkBlue: #538192; 17 | $middleLightBlue: #9FD3E6; 18 | $lightBlue: #CBE4EE; 19 | 20 | $darkGreen: #5F5F00; 21 | $middleDarkGreen: #739200; 22 | $middleLightGreen:#B1D631; 23 | $lightGreen: #BBFFAA; 24 | 25 | $darkTan: #503D15; 26 | $lightTan: #ECE1C8; 27 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_tomorrow-night-blue.scss: -------------------------------------------------------------------------------- 1 | $background: #002451; 2 | $foreground: #ffffff; 3 | $comment: #7285b7; 4 | 5 | $red: #ff9da4; 6 | $orange: #ffc58f; 7 | $yellow: #ffeead; 8 | $green: #d1f1a9; 9 | $aqua: #99ffff; 10 | $blue: #bbdaff; 11 | $purple: #ebbbff; 12 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_tomorrow-night-bright.scss: -------------------------------------------------------------------------------- 1 | $background: #000000; 2 | $foreground: #eaeaea; 3 | $comment: #969896; 4 | 5 | $red: #d54e53; 6 | $orange: #e78c45; 7 | $yellow: #e7c547; 8 | $green: #b9ca4a; 9 | $aqua: #70c0b1; 10 | $blue: #7aa6da; 11 | $purple: #c397d8; 12 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_tomorrow-night-eighties.scss: -------------------------------------------------------------------------------- 1 | $background: #2d2d2d; 2 | $foreground: #cccccc; 3 | $comment: #999999; 4 | 5 | $red: #f2777a; 6 | $orange: #f99157; 7 | $yellow: #ffcc66; 8 | $green: #99cc99; 9 | $aqua: #66cccc; 10 | $blue: #6699cc; 11 | $purple: #cc99cc; 12 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_tomorrow-night.scss: -------------------------------------------------------------------------------- 1 | $background: #1d1f21; 2 | $foreground: #c5c8c6; 3 | $comment: #969896; 4 | 5 | $red: #cc6666; 6 | $orange: #de935f; 7 | $yellow: #f0c674; 8 | $green: #b5bd68; 9 | $aqua: #8abeb7; 10 | $blue: #81a2be; 11 | $purple: #b294bb; 12 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_tomorrow.scss: -------------------------------------------------------------------------------- 1 | $background: #ffffff; 2 | $foreground: #4d4d4c; 3 | $comment: #8e908c; 4 | 5 | $red: #c82829; 6 | $orange: #f5871f; 7 | $yellow: #eab700; 8 | $green: #718c00; 9 | $aqua: #3e999f; 10 | $blue: #4271ae; 11 | $purple: #8959a8; 12 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_tranquil-heart.scss: -------------------------------------------------------------------------------- 1 | $background: #2f3640; 2 | $foreground: #e6e9ed; 3 | $string: #ffce54; 4 | $keyword: #4fc1e9; 5 | $comment: #656d78; 6 | $type: #4fc1e9; 7 | $literal: #ac92ec; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: #ed5565; 12 | $markup_attr_n: #a0d468; 13 | $markup_attr_v: #ffce54; 14 | $declaration: #ac92ec; 15 | $variable: $foreground; 16 | $function: $foreground; 17 | $linenums: #656d78; 18 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/colors/_vibrant-ink.scss: -------------------------------------------------------------------------------- 1 | $background: #000; 2 | $foreground: #fff; 3 | $string: #6f0; 4 | $keyword: #f60; 5 | $comment: #93c; 6 | $type: #458; 7 | $literal: #458; 8 | $punctuation: $foreground; 9 | $open_bracket: $foreground; 10 | $close_bracket: $foreground; 11 | $markup_tag: $foreground; 12 | $markup_attr_n: #9c9; 13 | $markup_attr_v: #6f0; 14 | $declaration: $foreground; 15 | $variable: $foreground; 16 | $function: #fc0; 17 | $linenums: darken($foreground, 60%); 18 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/github-v2.scss: -------------------------------------------------------------------------------- 1 | @import "colors/github-v2"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/github.scss: -------------------------------------------------------------------------------- 1 | @import "colors/github"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/hemisu-dark.scss: -------------------------------------------------------------------------------- 1 | @import "colors/hemisu"; 2 | @import "colors/hemisu-dark"; 3 | @import "base-hemisu"; 4 | @import "base"; 5 | @include prettyprint(); 6 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/hemisu-light.scss: -------------------------------------------------------------------------------- 1 | @import "colors/hemisu"; 2 | @import "colors/hemisu-light"; 3 | @import "base-hemisu"; 4 | @import "base"; 5 | @include prettyprint(); 6 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/tomorrow-night-blue.scss: -------------------------------------------------------------------------------- 1 | @import "colors/tomorrow-night-blue"; 2 | @import "base-tomorrow"; 3 | @import "base"; 4 | @include prettyprint(); 5 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/tomorrow-night-bright.scss: -------------------------------------------------------------------------------- 1 | @import "colors/tomorrow-night-bright"; 2 | @import "base-tomorrow"; 3 | @import "base"; 4 | @include prettyprint(); 5 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/tomorrow-night-eighties.scss: -------------------------------------------------------------------------------- 1 | @import "colors/tomorrow-night-eighties"; 2 | @import "base-tomorrow"; 3 | @import "base"; 4 | @include prettyprint(); 5 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/tomorrow-night.scss: -------------------------------------------------------------------------------- 1 | @import "colors/tomorrow-night"; 2 | @import "base-tomorrow"; 3 | @import "base"; 4 | @include prettyprint(); 5 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/tomorrow.scss: -------------------------------------------------------------------------------- 1 | @import "colors/tomorrow"; 2 | @import "base-tomorrow"; 3 | @import "base"; 4 | @include prettyprint(); 5 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/tranquil-heart.scss: -------------------------------------------------------------------------------- 1 | @import "colors/tranquil-heart"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/css/color-themes-for-google-code-prettify-master/src/themes/vibrant-ink.scss: -------------------------------------------------------------------------------- 1 | @import "colors/vibrant-ink"; 2 | @import "base"; 3 | @include prettyprint(); 4 | -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-Bold-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-Bold-webfont.eot -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-Bold-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-Bold-webfont.woff -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-BoldItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-BoldItalic-webfont.eot -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-BoldItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-BoldItalic-webfont.woff -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-Italic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-Italic-webfont.eot -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-Italic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-Italic-webfont.woff -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-Light-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-Light-webfont.eot -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-Light-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-Light-webfont.woff -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-LightItalic-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-LightItalic-webfont.eot -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-LightItalic-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-LightItalic-webfont.woff -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-Regular-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-Regular-webfont.eot -------------------------------------------------------------------------------- /vblog/static/editormd/docs/fonts/OpenSans-Regular-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/docs/fonts/OpenSans-Regular-webfont.woff -------------------------------------------------------------------------------- /vblog/static/editormd/docs/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | /*global document */ 2 | (function() { 3 | var source = document.getElementsByClassName('prettyprint source linenums'); 4 | var i = 0; 5 | var lineNumber = 0; 6 | var lineId; 7 | var lines; 8 | var totalLines; 9 | var anchorHash; 10 | 11 | if (source && source[0]) { 12 | anchorHash = document.location.hash.substring(1); 13 | lines = source[0].getElementsByTagName('li'); 14 | totalLines = lines.length; 15 | 16 | for (; i < totalLines; i++) { 17 | lineNumber++; 18 | lineId = 'line' + lineNumber; 19 | lines[i].id = lineId; 20 | if (lineId === anchorHash) { 21 | lines[i].className += ' selected'; 22 | } 23 | } 24 | } 25 | })(); 26 | -------------------------------------------------------------------------------- /vblog/static/editormd/docs/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /vblog/static/editormd/examples/images/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/examples/images/4.jpg -------------------------------------------------------------------------------- /vblog/static/editormd/examples/images/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/examples/images/7.jpg -------------------------------------------------------------------------------- /vblog/static/editormd/examples/images/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/examples/images/8.jpg -------------------------------------------------------------------------------- /vblog/static/editormd/examples/images/editormd-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/examples/images/editormd-screenshot.png -------------------------------------------------------------------------------- /vblog/static/editormd/examples/php/post.php: -------------------------------------------------------------------------------- 1 | "; 7 | echo htmlspecialchars($_POST["test-editormd-markdown-doc"]); 8 | 9 | if(isset($_POST["test-editormd-html-code"])) { 10 | echo "

"; 11 | echo htmlspecialchars($_POST["test-editormd-html-code"]); 12 | } 13 | 14 | echo ""; 15 | } 16 | 17 | exit; 18 | ?> -------------------------------------------------------------------------------- /vblog/static/editormd/examples/php/upload_callback.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 34 | 35 | -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/editormd-logo.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/fonts/editormd-logo.eot -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/editormd-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/editormd-logo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/fonts/editormd-logo.ttf -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/editormd-logo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/fonts/editormd-logo.woff -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /vblog/static/editormd/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /vblog/static/editormd/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/loading.gif -------------------------------------------------------------------------------- /vblog/static/editormd/images/loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/loading@2x.gif -------------------------------------------------------------------------------- /vblog/static/editormd/images/loading@3x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/loading@3x.gif -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-favicon-16x16.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-favicon-16x16.ico -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-favicon-24x24.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-favicon-24x24.ico -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-favicon-32x32.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-favicon-32x32.ico -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-favicon-48x48.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-favicon-48x48.ico -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-favicon-64x64.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-favicon-64x64.ico -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-114x114.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-120x120.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-144x144.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-16x16.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-180x180.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-240x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-240x240.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-24x24.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-320x320.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-320x320.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-32x32.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-48x48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-48x48.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-57x57.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-64x64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-64x64.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-72x72.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/editormd-logo-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/editormd-logo-96x96.png -------------------------------------------------------------------------------- /vblog/static/editormd/images/logos/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenweihang/blog-master/e9984882ce1bd794c7bb018c31becd2b6ec0bfd4/vblog/static/editormd/images/logos/vi.png -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 by Marijn Haverbeke and others 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/README.md: -------------------------------------------------------------------------------- 1 | # CodeMirror 2 | [![Build Status](https://travis-ci.org/codemirror/CodeMirror.svg)](https://travis-ci.org/codemirror/CodeMirror) 3 | [![NPM version](https://img.shields.io/npm/v/codemirror.svg)](https://www.npmjs.org/package/codemirror) 4 | [Funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png)](https://marijnhaverbeke.nl/fund/) 5 | 6 | CodeMirror is a JavaScript component that provides a code editor in 7 | the browser. When a mode is available for the language you are coding 8 | in, it will color your code, and optionally help with indentation. 9 | 10 | The project page is http://codemirror.net 11 | The manual is at http://codemirror.net/doc/manual.html 12 | The contributing guidelines are in [CONTRIBUTING.md](https://github.com/codemirror/CodeMirror/blob/master/CONTRIBUTING.md) 13 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/dialog/dialog.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-dialog { 2 | position: absolute; 3 | left: 0; right: 0; 4 | background: white; 5 | z-index: 15; 6 | padding: .1em .8em; 7 | overflow: hidden; 8 | color: #333; 9 | } 10 | 11 | .CodeMirror-dialog-top { 12 | border-bottom: 1px solid #eee; 13 | top: 0; 14 | } 15 | 16 | .CodeMirror-dialog-bottom { 17 | border-top: 1px solid #eee; 18 | bottom: 0; 19 | } 20 | 21 | .CodeMirror-dialog input { 22 | border: none; 23 | outline: none; 24 | background: transparent; 25 | width: 20em; 26 | color: inherit; 27 | font-family: monospace; 28 | } 29 | 30 | .CodeMirror-dialog button { 31 | font-size: 70%; 32 | } 33 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/display/fullscreen.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-fullscreen { 2 | position: fixed; 3 | top: 0; left: 0; right: 0; bottom: 0; 4 | height: auto; 5 | z-index: 9; 6 | } 7 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/edit/trailingspace.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | CodeMirror.defineOption("showTrailingSpace", false, function(cm, val, prev) { 13 | if (prev == CodeMirror.Init) prev = false; 14 | if (prev && !val) 15 | cm.removeOverlay("trailingspace"); 16 | else if (!prev && val) 17 | cm.addOverlay({ 18 | token: function(stream) { 19 | for (var l = stream.string.length, i = l; i && /\s/.test(stream.string.charAt(i - 1)); --i) {} 20 | if (i > stream.pos) { stream.pos = i; return null; } 21 | stream.pos = l; 22 | return "trailingspace"; 23 | }, 24 | name: "trailingspace" 25 | }); 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/fold/foldgutter.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-foldmarker { 2 | color: blue; 3 | text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; 4 | font-family: arial; 5 | line-height: .3; 6 | cursor: pointer; 7 | } 8 | .CodeMirror-foldgutter { 9 | width: .7em; 10 | } 11 | .CodeMirror-foldgutter-open, 12 | .CodeMirror-foldgutter-folded { 13 | cursor: pointer; 14 | } 15 | .CodeMirror-foldgutter-open:after { 16 | content: "\25BE"; 17 | } 18 | .CodeMirror-foldgutter-folded:after { 19 | content: "\25B8"; 20 | } 21 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/hint/show-hint.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-hints { 2 | position: absolute; 3 | z-index: 10; 4 | overflow: hidden; 5 | list-style: none; 6 | 7 | margin: 0; 8 | padding: 2px; 9 | 10 | -webkit-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 11 | -moz-box-shadow: 2px 3px 5px rgba(0,0,0,.2); 12 | box-shadow: 2px 3px 5px rgba(0,0,0,.2); 13 | border-radius: 3px; 14 | border: 1px solid silver; 15 | 16 | background: white; 17 | font-size: 90%; 18 | font-family: monospace; 19 | 20 | max-height: 20em; 21 | overflow-y: auto; 22 | } 23 | 24 | .CodeMirror-hint { 25 | margin: 0; 26 | padding: 0 4px; 27 | border-radius: 2px; 28 | max-width: 19em; 29 | overflow: hidden; 30 | white-space: pre; 31 | color: black; 32 | cursor: pointer; 33 | } 34 | 35 | li.CodeMirror-hint-active { 36 | background: #08f; 37 | color: white; 38 | } 39 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/lint/json-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // Depends on jsonlint.js from https://github.com/zaach/jsonlint 5 | 6 | // declare global: jsonlint 7 | 8 | (function(mod) { 9 | if (typeof exports == "object" && typeof module == "object") // CommonJS 10 | mod(require("../../lib/codemirror")); 11 | else if (typeof define == "function" && define.amd) // AMD 12 | define(["../../lib/codemirror"], mod); 13 | else // Plain browser env 14 | mod(CodeMirror); 15 | })(function(CodeMirror) { 16 | "use strict"; 17 | 18 | CodeMirror.registerHelper("lint", "json", function(text) { 19 | var found = []; 20 | jsonlint.parseError = function(str, hash) { 21 | var loc = hash.loc; 22 | found.push({from: CodeMirror.Pos(loc.first_line - 1, loc.first_column), 23 | to: CodeMirror.Pos(loc.last_line - 1, loc.last_column), 24 | message: str}); 25 | }; 26 | try { jsonlint.parse(text); } 27 | catch(e) {} 28 | return found; 29 | }); 30 | 31 | }); 32 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/lint/yaml-lint.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | // Depends on js-yaml.js from https://github.com/nodeca/js-yaml 15 | 16 | // declare global: jsyaml 17 | 18 | CodeMirror.registerHelper("lint", "yaml", function(text) { 19 | var found = []; 20 | try { jsyaml.load(text); } 21 | catch(e) { 22 | var loc = e.mark; 23 | found.push({ from: CodeMirror.Pos(loc.line, loc.column), to: CodeMirror.Pos(loc.line, loc.column), message: e.message }); 24 | } 25 | return found; 26 | }); 27 | 28 | }); 29 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/mode/multiplex_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | CodeMirror.defineMode("markdown_with_stex", function(){ 6 | var inner = CodeMirror.getMode({}, "stex"); 7 | var outer = CodeMirror.getMode({}, "markdown"); 8 | 9 | var innerOptions = { 10 | open: '$', 11 | close: '$', 12 | mode: inner, 13 | delimStyle: 'delim', 14 | innerStyle: 'inner' 15 | }; 16 | 17 | return CodeMirror.multiplexingMode(outer, innerOptions); 18 | }); 19 | 20 | var mode = CodeMirror.getMode({}, "markdown_with_stex"); 21 | 22 | function MT(name) { 23 | test.mode( 24 | name, 25 | mode, 26 | Array.prototype.slice.call(arguments, 1), 27 | 'multiplexing'); 28 | } 29 | 30 | MT( 31 | "stexInsideMarkdown", 32 | "[strong **Equation:**] [delim $][inner&tag \\pi][delim $]"); 33 | })(); 34 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/addon/search/matchesonscrollbar.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-search-match { 2 | background: gold; 3 | border-top: 1px solid orange; 4 | border-bottom: 1px solid orange; 5 | -moz-box-sizing: border-box; 6 | box-sizing: border-box; 7 | opacity: .5; 8 | } 9 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codemirror", 3 | "version":"5.0.0", 4 | "main": ["lib/codemirror.js", "lib/codemirror.css"], 5 | "ignore": [ 6 | "**/.*", 7 | "node_modules", 8 | "components", 9 | "bin", 10 | "demo", 11 | "doc", 12 | "test", 13 | "index.html", 14 | "package.json" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/mode/ruby/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("divide_equal_operator", 9 | "[variable bar] [operator /=] [variable foo]"); 10 | 11 | MT("divide_equal_operator_no_spacing", 12 | "[variable foo][operator /=][number 42]"); 13 | 14 | })(); 15 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px ! important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "codemirror", 3 | "version":"5.0.0", 4 | "main": "lib/codemirror.js", 5 | "description": "In-browser code editing made bearable", 6 | "licenses": [{"type": "MIT", 7 | "url": "http://codemirror.net/LICENSE"}], 8 | "directories": {"lib": "./lib"}, 9 | "scripts": {"test": "node ./test/run.js"}, 10 | "devDependencies": {"node-static": "0.6.0", 11 | "phantomjs": "1.9.2-5", 12 | "blint": ">=0.1.1"}, 13 | "bugs": "http://github.com/codemirror/CodeMirror/issues", 14 | "keywords": ["JavaScript", "CodeMirror", "Editor"], 15 | "homepage": "http://codemirror.net", 16 | "maintainers":[{"name": "Marijn Haverbeke", 17 | "email": "marijnh@gmail.com", 18 | "web": "http://marijnhaverbeke.nl"}], 19 | "repository": {"type": "git", 20 | "url": "https://github.com/codemirror/CodeMirror.git"} 21 | } 22 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/theme/ambiance-mobile.css: -------------------------------------------------------------------------------- 1 | .cm-s-ambiance.CodeMirror { 2 | -webkit-box-shadow: none; 3 | -moz-box-shadow: none; 4 | box-shadow: none; 5 | } 6 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/theme/elegant.css: -------------------------------------------------------------------------------- 1 | .cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom {color: #762;} 2 | .cm-s-elegant span.cm-comment {color: #262; font-style: italic; line-height: 1em;} 3 | .cm-s-elegant span.cm-meta {color: #555; font-style: italic; line-height: 1em;} 4 | .cm-s-elegant span.cm-variable {color: black;} 5 | .cm-s-elegant span.cm-variable-2 {color: #b11;} 6 | .cm-s-elegant span.cm-qualifier {color: #555;} 7 | .cm-s-elegant span.cm-keyword {color: #730;} 8 | .cm-s-elegant span.cm-builtin {color: #30a;} 9 | .cm-s-elegant span.cm-link {color: #762;} 10 | .cm-s-elegant span.cm-error {background-color: #fdd;} 11 | 12 | .cm-s-elegant .CodeMirror-activeline-background {background: #e8f2ff !important;} 13 | .cm-s-elegant .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 14 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/theme/neat.css: -------------------------------------------------------------------------------- 1 | .cm-s-neat span.cm-comment { color: #a86; } 2 | .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } 3 | .cm-s-neat span.cm-string { color: #a22; } 4 | .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } 5 | .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } 6 | .cm-s-neat span.cm-variable { color: black; } 7 | .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } 8 | .cm-s-neat span.cm-meta {color: #555;} 9 | .cm-s-neat span.cm-link { color: #3a3; } 10 | 11 | .cm-s-neat .CodeMirror-activeline-background {background: #e8f2ff !important;} 12 | .cm-s-neat .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 13 | -------------------------------------------------------------------------------- /vblog/static/editormd/lib/codemirror/theme/neo.css: -------------------------------------------------------------------------------- 1 | /* neo theme for codemirror */ 2 | 3 | /* Color scheme */ 4 | 5 | .cm-s-neo.CodeMirror { 6 | background-color:#ffffff; 7 | color:#2e383c; 8 | line-height:1.4375; 9 | } 10 | .cm-s-neo .cm-comment {color:#75787b} 11 | .cm-s-neo .cm-keyword, .cm-s-neo .cm-property {color:#1d75b3} 12 | .cm-s-neo .cm-atom,.cm-s-neo .cm-number {color:#75438a} 13 | .cm-s-neo .cm-node,.cm-s-neo .cm-tag {color:#9c3328} 14 | .cm-s-neo .cm-string {color:#b35e14} 15 | .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier {color:#047d65} 16 | 17 | 18 | /* Editor styling */ 19 | 20 | .cm-s-neo pre { 21 | padding:0; 22 | } 23 | 24 | .cm-s-neo .CodeMirror-gutters { 25 | border:none; 26 | border-right:10px solid transparent; 27 | background-color:transparent; 28 | } 29 | 30 | .cm-s-neo .CodeMirror-linenumber { 31 | padding:0; 32 | color:#e0e2e5; 33 | } 34 | 35 | .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } 36 | .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } 37 | 38 | .cm-s-neo div.CodeMirror-cursor { 39 | width: auto; 40 | border: 0; 41 | background: rgba(155,157,162,0.37); 42 | z-index: 1; 43 | } 44 | -------------------------------------------------------------------------------- /vblog/static/editormd/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "editor.md", 3 | "version": "1.5.0", 4 | "description": "Open source online markdown editor.", 5 | "directories": { 6 | "doc": "docs", 7 | "example": "examples", 8 | "test": "tests" 9 | }, 10 | "scripts": { 11 | "test": "echo \"Error: no test specified\" && exit 1" 12 | }, 13 | "repository": { 14 | "type": "git", 15 | "url": "https://github.com/pandao/editor.md.git" 16 | }, 17 | "keywords": [ 18 | "editor.md", 19 | "markdown", 20 | "editor" 21 | ], 22 | "author": "Pandao", 23 | "license": "MIT", 24 | "bugs": { 25 | "url": "https://github.com/pandao/editor.md/issues" 26 | }, 27 | "homepage": "https://github.com/pandao/editor.md", 28 | "devDependencies": { 29 | "dateformatter": "^0.1.0", 30 | "gulp": "^3.8.11", 31 | "gulp-concat": "^2.4.2", 32 | "gulp-header": "^1.2.2", 33 | "gulp-jshint": "^1.9.0", 34 | "gulp-minify-css": "^0.4.4", 35 | "gulp-notify": "^2.1.0", 36 | "gulp-rename": "^1.2.0", 37 | "gulp-replace": "^0.5.3", 38 | "gulp-ruby-sass": "^1.0.1", 39 | "gulp-uglifyjs": "^0.6.1", 40 | "gulp-util": "^3.0.1" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /vblog/static/editormd/scss/editormd.grid.scss: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | 3 | .editormd-grid-table { 4 | width: 99%; 5 | display: table; 6 | border: 1px solid #ddd; 7 | border-collapse: collapse; 8 | } 9 | 10 | .editormd-grid-table-row { 11 | width: 100%; 12 | display: table-row; 13 | 14 | a { 15 | font-size: 1.4em; 16 | width: 5%; 17 | height: 36px; 18 | color: #999; 19 | text-align: center; 20 | display: table-cell; 21 | vertical-align: middle; 22 | border: 1px solid #ddd; 23 | text-decoration: none; 24 | @include transition(background-color 300ms ease-out, color 100ms ease-in); 25 | 26 | &.selected { 27 | color: #666; 28 | background-color: #eee; 29 | } 30 | 31 | &:hover { 32 | color: #777; 33 | background-color: #f6f6f6; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /vblog/static/editormd/scss/editormd.themes.scss: -------------------------------------------------------------------------------- 1 | /* Editor.md Dark theme */ 2 | 3 | #{$prefix}theme-dark { 4 | border-color: #1a1a17; 5 | 6 | #{$prefix}toolbar { 7 | background: #1A1A17; 8 | border-color: #1a1a17; 9 | } 10 | 11 | #{$prefix}menu > li > a { 12 | color: #777; 13 | border-color: #1a1a17; 14 | 15 | &:hover, &.active { 16 | border-color: #333; 17 | background: #333; 18 | } 19 | } 20 | 21 | #{$prefix}menu > li.divider { 22 | border-right: 1px solid #111; 23 | } 24 | 25 | .CodeMirror { 26 | border-right: 1px solid rgba(0,0,0,0.1); 27 | } 28 | } -------------------------------------------------------------------------------- /vblog/static/editormd/scss/lib/variables.scss: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | // Global Variables 4 | 5 | $prefix : ".editormd-"; 6 | $color : #666; 7 | $mainColor : #2196F3; 8 | $primaryColor : $mainColor; 9 | $secondColor : #33CC66; 10 | $thirdColor : #999999; 11 | $borderColor : #ddd; -------------------------------------------------------------------------------- /vblog/vue.config.js: -------------------------------------------------------------------------------- 1 | // vue.config.js 2 | module.exports = { 3 | devServer: { 4 | open: true, 5 | port: 8001 6 | } 7 | } 8 | --------------------------------------------------------------------------------