├── .gitattributes ├── .gitignore ├── .mvn └── wrapper │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── README.md ├── blog-plus.sql ├── gitattributes ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main ├── java │ └── com │ │ └── qiang │ │ ├── AcblogApplication.java │ │ ├── common │ │ ├── config │ │ │ ├── DruidConfig.java │ │ │ ├── ErrorConfig.java │ │ │ ├── MybatisPlusConfig.java │ │ │ ├── RedisConfig.java │ │ │ └── WebConfig.java │ │ └── utils │ │ │ ├── BlogJSONResult.java │ │ │ ├── BuildArticleTabloidUtil.java │ │ │ ├── CommonUtils.java │ │ │ ├── Constant.java │ │ │ ├── FileUtil.java │ │ │ ├── PagedResult.java │ │ │ ├── RedisOperator.java │ │ │ ├── StringAndArray.java │ │ │ ├── TimeUtil.java │ │ │ ├── TransCodingUtil.java │ │ │ └── phoneVerify │ │ │ ├── component │ │ │ └── PhoneRandomBuilder.java │ │ │ ├── service │ │ │ └── SMSService.java │ │ │ └── util │ │ │ └── SMSUtil.java │ │ └── modules │ │ └── sys │ │ ├── controller │ │ ├── AdminController.java │ │ ├── ArticleController.java │ │ ├── BackController.java │ │ ├── CategoriesController.java │ │ ├── CommentController.java │ │ ├── EditorController.java │ │ ├── ErrorPageController.java │ │ ├── FindPwdController.java │ │ ├── FriendLinkController.java │ │ ├── GuestController.java │ │ ├── IndexController.java │ │ ├── LabelController.java │ │ ├── LoginController.java │ │ ├── RegisterController.java │ │ ├── TimeAtricleController.java │ │ └── UserController.java │ │ ├── dao │ │ ├── BlogDao.java │ │ ├── CommentDao.java │ │ ├── CommentLikeDao.java │ │ ├── FriendLikesDao.java │ │ ├── FriendlinkDao.java │ │ ├── FriendurlDao.java │ │ ├── GuestDao.java │ │ ├── GuestLikesDao.java │ │ ├── IndexDao.java │ │ ├── LabelDao.java │ │ ├── RegisterDao.java │ │ ├── RepCommentDao.java │ │ ├── RepFriendlinkDao.java │ │ ├── RepGuestDao.java │ │ ├── UsersDao.java │ │ └── UsersLoginDao.java │ │ ├── entity │ │ ├── BlogMessageEntity.java │ │ ├── CommentEntity.java │ │ ├── CommentLikesEntity.java │ │ ├── FriendLikesEntity.java │ │ ├── FriendLinkEntity.java │ │ ├── FriendurlEntity.java │ │ ├── GuestEntity.java │ │ ├── GuestLikesEntity.java │ │ ├── LabelEntity.java │ │ ├── PermissionEntity.java │ │ ├── RepFriendLinkEntity.java │ │ ├── RepGuestEntity.java │ │ ├── ReportCommentEntity.java │ │ ├── RoleEntity.java │ │ ├── UsersEntity.java │ │ ├── VO │ │ │ ├── BlogMessageVOEntity.java │ │ │ ├── BlogUserVO.java │ │ │ ├── RoleVOEntity.java │ │ │ └── UsersVOEntity.java │ │ └── WebMessageEntity.java │ │ ├── service │ │ ├── AdminService.java │ │ ├── ArticleService.java │ │ ├── AsyncService.java │ │ ├── BlogService.java │ │ ├── CommentService.java │ │ ├── FriendLinkService.java │ │ ├── GuestService.java │ │ ├── IndexService.java │ │ ├── LabelService.java │ │ ├── RedisService.java │ │ ├── RegisterService.java │ │ ├── ScheduledService.java │ │ ├── UserService.java │ │ └── impl │ │ │ ├── AdminServiceImpl.java │ │ │ ├── ArticleServiceImpl.java │ │ │ ├── AsyncServiceImpl.java │ │ │ ├── BlogServiceImpl.java │ │ │ ├── CommentServiceImpl.java │ │ │ ├── FriendLinkServiceImpl.java │ │ │ ├── GuestServiceImpl.java │ │ │ ├── IndexServiceImpl.java │ │ │ ├── LabelServiceImpl.java │ │ │ ├── RedisServiceImpl.java │ │ │ ├── RegisterServiceImpl.java │ │ │ ├── ScheduledServiceImpl.java │ │ │ └── UserServiceImpl.java │ │ └── shiro │ │ ├── AuthRealm.java │ │ ├── CustomSessionIdGenerator.java │ │ ├── CustomSessionManager.java │ │ ├── ShiroConfig.java │ │ └── ShiroMD5.java └── resources │ ├── application-dev.yml │ ├── application-prod.yml │ ├── application-test.yml │ ├── application.properties │ ├── application.yml │ ├── logback-spring.xml │ ├── mappering │ ├── CommentDao.xml │ ├── CommentLikeDao.xml │ ├── FriendlinkDao.xml │ ├── GuestDao.xml │ ├── RepCommentDao.xml │ ├── RepGuestDao.xml │ ├── UsersDao.xml │ └── UsersLoginDao.xml │ ├── static │ ├── assets │ │ ├── css │ │ │ ├── admin.css │ │ │ ├── amazeui.css │ │ │ ├── amazeui.flat.css │ │ │ ├── amazeui.flat.min.css │ │ │ ├── amazeui.min.css │ │ │ └── app.css │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ └── fontawesome-webfont.woff2 │ │ ├── i │ │ │ ├── app-icon72x72@2x.png │ │ │ ├── examples │ │ │ │ ├── admin-chrome.png │ │ │ │ ├── admin-firefox.png │ │ │ │ ├── admin-ie.png │ │ │ │ ├── admin-opera.png │ │ │ │ ├── admin-safari.png │ │ │ │ ├── adminPage.png │ │ │ │ ├── blogPage.png │ │ │ │ ├── landing.png │ │ │ │ ├── landingPage.png │ │ │ │ ├── loginPage.png │ │ │ │ └── sidebarPage.png │ │ │ ├── favicon.png │ │ │ └── startup-640x1096.png │ │ └── js │ │ │ ├── amazeui.ie8polyfill.js │ │ │ ├── amazeui.ie8polyfill.min.js │ │ │ ├── amazeui.js │ │ │ ├── amazeui.min.js │ │ │ ├── amazeui.widgets.helper.js │ │ │ ├── amazeui.widgets.helper.min.js │ │ │ ├── app.js │ │ │ ├── handlebars.min.js │ │ │ └── jquery-1.12.4.min.js │ ├── img │ │ └── errorpage │ │ │ ├── 403.jpg │ │ │ └── 404.png │ ├── layui │ │ ├── css │ │ │ ├── layui.css │ │ │ ├── layui.mobile.css │ │ │ └── modules │ │ │ │ ├── code.css │ │ │ │ ├── laydate │ │ │ │ └── default │ │ │ │ │ └── laydate.css │ │ │ │ └── layer │ │ │ │ └── default │ │ │ │ ├── icon-ext.png │ │ │ │ ├── icon.png │ │ │ │ ├── layer.css │ │ │ │ ├── loading-0.gif │ │ │ │ ├── loading-1.gif │ │ │ │ └── loading-2.gif │ │ ├── font │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ └── iconfont.woff2 │ │ ├── images │ │ │ └── face │ │ │ │ ├── 0.gif │ │ │ │ ├── 1.gif │ │ │ │ ├── 10.gif │ │ │ │ ├── 11.gif │ │ │ │ ├── 12.gif │ │ │ │ ├── 13.gif │ │ │ │ ├── 14.gif │ │ │ │ ├── 15.gif │ │ │ │ ├── 16.gif │ │ │ │ ├── 17.gif │ │ │ │ ├── 18.gif │ │ │ │ ├── 19.gif │ │ │ │ ├── 2.gif │ │ │ │ ├── 20.gif │ │ │ │ ├── 21.gif │ │ │ │ ├── 22.gif │ │ │ │ ├── 23.gif │ │ │ │ ├── 24.gif │ │ │ │ ├── 25.gif │ │ │ │ ├── 26.gif │ │ │ │ ├── 27.gif │ │ │ │ ├── 28.gif │ │ │ │ ├── 29.gif │ │ │ │ ├── 3.gif │ │ │ │ ├── 30.gif │ │ │ │ ├── 31.gif │ │ │ │ ├── 32.gif │ │ │ │ ├── 33.gif │ │ │ │ ├── 34.gif │ │ │ │ ├── 35.gif │ │ │ │ ├── 36.gif │ │ │ │ ├── 37.gif │ │ │ │ ├── 38.gif │ │ │ │ ├── 39.gif │ │ │ │ ├── 4.gif │ │ │ │ ├── 40.gif │ │ │ │ ├── 41.gif │ │ │ │ ├── 42.gif │ │ │ │ ├── 43.gif │ │ │ │ ├── 44.gif │ │ │ │ ├── 45.gif │ │ │ │ ├── 46.gif │ │ │ │ ├── 47.gif │ │ │ │ ├── 48.gif │ │ │ │ ├── 49.gif │ │ │ │ ├── 5.gif │ │ │ │ ├── 50.gif │ │ │ │ ├── 51.gif │ │ │ │ ├── 52.gif │ │ │ │ ├── 53.gif │ │ │ │ ├── 54.gif │ │ │ │ ├── 55.gif │ │ │ │ ├── 56.gif │ │ │ │ ├── 57.gif │ │ │ │ ├── 58.gif │ │ │ │ ├── 59.gif │ │ │ │ ├── 6.gif │ │ │ │ ├── 60.gif │ │ │ │ ├── 61.gif │ │ │ │ ├── 62.gif │ │ │ │ ├── 63.gif │ │ │ │ ├── 64.gif │ │ │ │ ├── 65.gif │ │ │ │ ├── 66.gif │ │ │ │ ├── 67.gif │ │ │ │ ├── 68.gif │ │ │ │ ├── 69.gif │ │ │ │ ├── 7.gif │ │ │ │ ├── 70.gif │ │ │ │ ├── 71.gif │ │ │ │ ├── 8.gif │ │ │ │ └── 9.gif │ │ ├── lay │ │ │ └── modules │ │ │ │ ├── carousel.js │ │ │ │ ├── code.js │ │ │ │ ├── colorpicker.js │ │ │ │ ├── element.js │ │ │ │ ├── flow.js │ │ │ │ ├── form.js │ │ │ │ ├── jquery.js │ │ │ │ ├── laydate.js │ │ │ │ ├── layedit.js │ │ │ │ ├── layer.js │ │ │ │ ├── laypage.js │ │ │ │ ├── laytpl.js │ │ │ │ ├── mobile.js │ │ │ │ ├── rate.js │ │ │ │ ├── slider.js │ │ │ │ ├── table.js │ │ │ │ ├── transfer.js │ │ │ │ ├── tree.js │ │ │ │ ├── upload.js │ │ │ │ └── util.js │ │ ├── layui.all.js │ │ └── layui.js │ ├── myPicture.jpg │ └── style │ │ ├── SuperAdmin.css │ │ ├── archive.css │ │ ├── css │ │ └── editormd │ │ │ ├── css │ │ │ ├── editormd.css │ │ │ ├── editormd.js │ │ │ ├── editormd.min.css │ │ │ ├── editormd.min.js │ │ │ ├── editormd.preview.min.css │ │ │ └── style.css │ │ │ ├── editor.css │ │ │ ├── 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 │ │ │ ├── 4.jpg │ │ │ ├── 7.jpg │ │ │ ├── 8.jpg │ │ │ ├── editormd-screenshot.png │ │ │ └── loading.gif │ │ │ ├── js │ │ │ ├── editor.js │ │ │ ├── jquery.min.js │ │ │ ├── require.min.js │ │ │ ├── sea.js │ │ │ ├── seajs-main.js │ │ │ └── zepto.min.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 │ │ │ └── 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 │ │ │ └── help.md │ │ │ ├── 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 │ │ ├── errorpage.css │ │ ├── friendlink.css │ │ ├── guest.css │ │ ├── images │ │ ├── csdn.jpg │ │ ├── default.jpg │ │ ├── myPicture.jpg │ │ ├── qq.jpg │ │ ├── wutouxiang.png │ │ └── wx.png │ │ ├── index.css │ │ ├── js │ │ ├── AllArchive.js │ │ ├── SuperAdmin.js │ │ ├── aboutme.js │ │ ├── archive.js │ │ ├── background.js │ │ ├── categories.js │ │ ├── elasticsearch.js │ │ ├── findPwd.js │ │ ├── friendlink.js │ │ ├── guest.js │ │ ├── header.js │ │ ├── index.js │ │ ├── lastUrl.js │ │ ├── lightgallery │ │ │ ├── lg-autoplay.js │ │ │ ├── lg-fullscreen.js │ │ │ ├── lg-pager.js │ │ │ ├── lg-zoom.js │ │ │ ├── lightgallery.js │ │ │ └── picturefill.min.js │ │ ├── login.js │ │ ├── pagehelper.js │ │ ├── register.js │ │ ├── show.js │ │ ├── tag.js │ │ ├── tags.js │ │ ├── time.js │ │ ├── update.js │ │ └── user.js │ │ ├── show.css │ │ ├── tig.css │ │ ├── update.css │ │ └── user.css │ └── templates │ ├── 404.html │ ├── SuperAdmin.html │ ├── aboutme.html │ ├── archive.html │ ├── aside.html │ ├── categories.html │ ├── editor.html │ ├── elasticSearch.html │ ├── findPwd.html │ ├── footer.html │ ├── friendlink.html │ ├── guest.html │ ├── header.html │ ├── index.html │ ├── lasturl.html │ ├── left.html │ ├── login.html │ ├── lunbo.html │ ├── register.html │ ├── show.html │ ├── tags.html │ ├── time.html │ ├── update.html │ └── user.html └── test └── java └── com └── qiang └── AcblogApplicationTests.java /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=java 2 | *.css linguist-language=java 3 | *.html linguist-language=java 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | HELP.md 2 | target/ 3 | !.mvn/wrapper/maven-wrapper.jar 4 | !**/src/main/** 5 | !**/src/test/** 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 | 30 | ### VS Code ### 31 | .vscode/ 32 | -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip 2 | -------------------------------------------------------------------------------- /gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=java 2 | *.css linguist-language=java 3 | *.html linguist-language=java 4 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/AcblogApplication.java: -------------------------------------------------------------------------------- 1 | package com.qiang; 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.cache.annotation.EnableCaching; 7 | import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; 8 | import org.springframework.scheduling.annotation.EnableAsync; 9 | import org.springframework.scheduling.annotation.EnableScheduling; 10 | 11 | @SpringBootApplication 12 | @MapperScan(basePackages = "com.qiang.modules.sys.dao") 13 | @EnableCaching 14 | @EnableAsync // 开启异步任务 15 | @EnableScheduling // 开启定时任务 16 | //@EnableElasticsearchRepositories // 17 | public class AcblogApplication { 18 | 19 | public static void main(String[] args) { 20 | SpringApplication.run(AcblogApplication.class, args); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/common/config/ErrorConfig.java: -------------------------------------------------------------------------------- 1 | package com.qiang.common.config; 2 | 3 | import org.springframework.boot.web.server.ConfigurableWebServerFactory; 4 | import org.springframework.boot.web.server.ErrorPage; 5 | import org.springframework.boot.web.server.WebServerFactoryCustomizer; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.http.HttpStatus; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.common.config 14 | * @Description: 错误页面定制 15 | * @Date: 2019/9/8 0008 14:56 16 | **/ 17 | @Configuration 18 | public class ErrorConfig { 19 | 20 | @Bean 21 | public WebServerFactoryCustomizer webServerFactoryCustomizer(){ 22 | return factory -> { 23 | ErrorPage errorPage404 = new ErrorPage(HttpStatus.NOT_FOUND, 24 | "/404"); 25 | ErrorPage errorPage403 = new ErrorPage(HttpStatus.FORBIDDEN, 26 | "/403"); 27 | ErrorPage errorPage500 = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, 28 | "/500"); 29 | factory.addErrorPages(errorPage403, errorPage404, 30 | errorPage500); 31 | }; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/common/config/MybatisPlusConfig.java: -------------------------------------------------------------------------------- 1 | package com.qiang.common.config; 2 | 3 | import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; 4 | import org.mybatis.spring.annotation.MapperScan; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.context.annotation.Configuration; 7 | import org.springframework.transaction.annotation.EnableTransactionManagement; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.mp.qiang.config 13 | * @Description: 14 | * @Date: 2019/7/26 0026 11:02 15 | **/ 16 | //Spring boot方式 17 | @EnableTransactionManagement 18 | @Configuration 19 | @MapperScan("com.qiang.modules.sys.dao") 20 | public class MybatisPlusConfig { 21 | /** 22 | * 分页插件 23 | */ 24 | @Bean 25 | public PaginationInterceptor paginationInterceptor() { 26 | PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); 27 | // paginationInterceptor.setLimit(你的最大单页限制数量,默认 500 条,小于 0 如 -1 不受限制); 28 | return paginationInterceptor; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/common/config/WebConfig.java: -------------------------------------------------------------------------------- 1 | package com.qiang.common.config; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 6 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 7 | 8 | /** 9 | * @Author: qiang 10 | * @ProjectName: adminsystem 11 | * @Package: com.qiang.common.config 12 | * @Description: 路径映射配置 13 | * @Date: 2019/8/16 0016 20:31 14 | **/ 15 | @Configuration 16 | public class WebConfig implements WebMvcConfigurer { 17 | 18 | @Value("${qiang.file-path}") 19 | private String url; 20 | 21 | // /E:/vblog/ /www/vblog/ 22 | @Override 23 | public void addResourceHandlers(ResourceHandlerRegistry registry) { 24 | registry.addResourceHandler("/**") 25 | .addResourceLocations("classpath:/static/") 26 | .addResourceLocations("file:"+url+"/"); 27 | registry.addResourceHandler("/article/**") 28 | .addResourceLocations("classpath:/static/"); 29 | registry.addResourceHandler("/categories/**") 30 | .addResourceLocations("classpath:/static/"); 31 | registry.addResourceHandler("/templates/**") 32 | .addResourceLocations("classpath:/static/"); 33 | registry.addResourceHandler("/time/**") 34 | .addResourceLocations("classpath:/static/"); 35 | registry.addResourceHandler("/es/**") 36 | .addResourceLocations("classpath:/static/"); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/common/utils/FileUtil.java: -------------------------------------------------------------------------------- 1 | package com.qiang.common.utils; 2 | 3 | import org.apache.tomcat.util.http.fileupload.IOUtils; 4 | 5 | import java.io.File; 6 | import java.io.FileOutputStream; 7 | import java.io.InputStream; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.qiang.common.utils 13 | * @Description: 文件上传工具类 14 | * @Date: 2019/7/31 0031 19:20 15 | **/ 16 | public class FileUtil { 17 | 18 | //文件上传工具类服务方法 19 | 20 | public static void uploadFile(InputStream file, String filePath) throws Exception{ 21 | FileOutputStream fileOutputStream = null; 22 | File files = new File(filePath); 23 | if (files.getParentFile() != null || !files.getParentFile().isDirectory()) { 24 | //创建父文件夹 25 | files.getParentFile().mkdirs(); 26 | } 27 | fileOutputStream = new FileOutputStream(files); 28 | IOUtils.copy(file, fileOutputStream); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/common/utils/PagedResult.java: -------------------------------------------------------------------------------- 1 | package com.qiang.common.utils; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @Description: 封装分页后的数据格式 7 | */ 8 | public class PagedResult { 9 | 10 | private int page; // 当前页数 11 | private Long total; // 总页数 12 | private long records; // 总记录数 13 | private List rows; // 每行显示的内容 14 | 15 | public int getPage() { 16 | return page; 17 | } 18 | public void setPage(int page) { 19 | this.page = page; 20 | } 21 | public long getTotal() { 22 | return total; 23 | } 24 | public void setTotal(long total) { 25 | this.total = total; 26 | } 27 | public long getRecords() { 28 | return records; 29 | } 30 | public void setRecords(long records) { 31 | this.records = records; 32 | } 33 | public List getRows() { 34 | return rows; 35 | } 36 | public void setRows(List rows) { 37 | this.rows = rows; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/common/utils/StringAndArray.java: -------------------------------------------------------------------------------- 1 | package com.qiang.common.utils; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | /** 6 | * @author: qiang 7 | * @Date: 2019/7/6 14:59 8 | * Describe: 字符串与字符串数组之间的转换 9 | */ 10 | @Component 11 | public class StringAndArray { 12 | 13 | /** 14 | * 字符串转换成字符串数组 15 | * @param str 字符串 16 | * @return 转换后的字符串数组 17 | */ 18 | public static String[] stringToArray(String str){ 19 | String[] array = str.split(","); 20 | for(int i=0;i labels = labelService.selAllLabel(); 36 | if(labels == null || labels.size() == 0 ){ 37 | return BlogJSONResult.errorMsg("无数据"); 38 | } 39 | return BlogJSONResult.ok(labels); 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/controller/TimeAtricleController.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.controller; 2 | 3 | import com.qiang.common.utils.BlogJSONResult; 4 | import com.qiang.common.utils.PagedResult; 5 | import com.qiang.modules.sys.service.ArticleService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import org.springframework.web.bind.annotation.RequestParam; 9 | import org.springframework.web.bind.annotation.RestController; 10 | 11 | /** 12 | * @Author: qiang 13 | * @ProjectName: adminsystem 14 | * @Package: com.qiang.controller 15 | * @Description: 时间查询文章 16 | * @Date: 2019/7/10 0010 17:41 17 | **/ 18 | @RestController 19 | public class TimeAtricleController { 20 | 21 | @Autowired 22 | private ArticleService articleService; 23 | 24 | /** 25 | * 通过时间查询 26 | * @param pageSize 27 | * @param pageNum 28 | * @param createTime 29 | * @return 30 | */ 31 | @GetMapping("/getTime") 32 | public BlogJSONResult getTime(@RequestParam("pageSize") int pageSize 33 | , @RequestParam("pageNum") int pageNum 34 | , @RequestParam("createTime") String createTime){ 35 | PagedResult byTime = articleService.findByTime(pageNum, pageSize, createTime); 36 | return BlogJSONResult.ok(byTime); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/BlogDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.VO.BlogMessageVOEntity; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.dao 11 | * @Description: 12 | * @Date: 2019/8/17 0017 15:44 13 | **/ 14 | @Repository 15 | public interface BlogDao extends BaseMapper { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/CommentDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.CommentEntity; 5 | import org.apache.ibatis.annotations.Param; 6 | import org.apache.ibatis.annotations.Update; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @Author: qiang 13 | * @ProjectName: adminsystem 14 | * @Package: com.qiang.modules.sys.mapper 15 | * @Description: 评论数据库 16 | * @Date: 2019/7/22 0022 14:56 17 | **/ 18 | @Repository 19 | public interface CommentDao extends BaseMapper { 20 | 21 | List findByBlogIdAndPid(long blogId); 22 | 23 | @Update("update comment set likes = likes - 1 where blog_id = #{blogId} and id = #{commentId}") 24 | int updDesCommIsLikes(@Param("blogId") Long blogId, @Param("commentId") Long commentId); 25 | 26 | @Update("update comment set likes = likes + 1 where blog_id = #{blogId} and id = #{commentId}") 27 | int updInsCommIsLikes(@Param("blogId") Long blogId, @Param("commentId") Long commentId); 28 | 29 | @Update("update comment set is_read = 0 where id = #{arg0}") 30 | int updOneBlogNotComm(Long id); 31 | 32 | @Update("update commentlikes set is_read = 0 where id = #{arg0}") 33 | int updOneBlogNotLikes(Long id); 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/CommentLikeDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.CommentLikesEntity; 5 | import org.apache.ibatis.annotations.Select; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.modules.sys.dao 14 | * @Description: 15 | * @Date: 2019/8/17 0017 19:10 16 | **/ 17 | @Repository 18 | public interface CommentLikeDao extends BaseMapper { 19 | 20 | List findLikes(String username); 21 | 22 | @Select("select cl.id from comment c INNER JOIN commentlikes cl on c.id = cl.comment_id where c.author_name = #{arg0} and cl.is_read = 1") 23 | List findNotReadLikesIdByUsername(String username); 24 | 25 | int updLikesIsRead(List rid); 26 | 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/FriendLikesDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.FriendLikesEntity; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.dao 11 | * @Description: 12 | * @Date: 2019/8/19 0019 20:28 13 | **/ 14 | @Repository 15 | public interface FriendLikesDao extends BaseMapper { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/FriendlinkDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.FriendLinkEntity; 5 | import com.qiang.modules.sys.entity.GuestEntity; 6 | import org.apache.ibatis.annotations.Update; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | /** 12 | * @Author: qiang 13 | * @ProjectName: adminsystem 14 | * @Package: com.qiang.modules.sys.dao 15 | * @Description: 16 | * @Date: 2019/8/19 0019 20:26 17 | **/ 18 | @Repository 19 | public interface FriendlinkDao extends BaseMapper { 20 | 21 | List getAllGuest(); 22 | 23 | @Update("update friendlink set likes = likes - 1 where id = #{arg0}") 24 | int updDesRepGuest(Long id); 25 | 26 | @Update("update friendlink set likes = likes + 1 where id = #{arg0}") 27 | int updInsRepGuest(Long id); 28 | 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/FriendurlDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.FriendurlEntity; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.dao 11 | * @Description: 12 | * @Date: 2019/8/19 0019 21:34 13 | **/ 14 | @Repository 15 | public interface FriendurlDao extends BaseMapper { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/GuestDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.GuestEntity; 5 | import org.apache.ibatis.annotations.Update; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.modules.sys.dao 14 | * @Description: 15 | * @Date: 2019/8/17 0017 20:31 16 | **/ 17 | @Repository 18 | public interface GuestDao extends BaseMapper { 19 | 20 | List getAllGuest(); 21 | 22 | @Update("update guest set likes = likes - 1 where id = #{arg0}") 23 | int updDesRepGuest(Long id); 24 | 25 | @Update("update guest set likes = likes + 1 where id = #{arg0}") 26 | int updInsRepGuest(Long id); 27 | 28 | @Update("update guest set is_read = 0 where id = #{arg0}") 29 | int updOneNotGuestMana(Long id); 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/GuestLikesDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.GuestLikesEntity; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.dao 11 | * @Description: 12 | * @Date: 2019/8/17 0017 20:41 13 | **/ 14 | @Repository 15 | public interface GuestLikesDao extends BaseMapper { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/IndexDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import org.apache.ibatis.annotations.Select; 4 | import org.apache.ibatis.annotations.Update; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.mapper 11 | * @Description: 12 | * @Date: 2019/8/8 0008 16:14 13 | **/ 14 | @Repository 15 | public interface IndexDao { 16 | 17 | @Select("select count(*) from blog") 18 | Long findmyArticlesCount(); 19 | 20 | @Select("select count(*) from label") 21 | int findMyLabelsCount(); 22 | 23 | @Select("select count(*) from reportcomment") 24 | Integer findMyReportCount(); 25 | 26 | @Select("select count(*) from comment") 27 | Integer findMyReportsCount(); 28 | 29 | @Select("select count(*) from guest") 30 | Integer findmyGuestCount(); 31 | 32 | @Select("select count(*) from repguest") 33 | Integer findmyGuestRepount(); 34 | 35 | @Select("select visitor from web") 36 | int findWebVisitorCount(); 37 | 38 | @Update("update web set visitor = #{argo}") 39 | int updWebVisitorCount(int count); 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/LabelDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.LabelEntity; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.dao 11 | * @Description: 12 | * @Date: 2019/8/17 0017 15:16 13 | **/ 14 | @Repository 15 | public interface LabelDao extends BaseMapper { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/RegisterDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.UsersEntity; 5 | import org.apache.ibatis.annotations.Select; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.modules.sys.dao 14 | * @Description: 15 | * @Date: 2019/8/16 0016 21:29 16 | **/ 17 | @Repository 18 | public interface RegisterDao extends BaseMapper { 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/RepCommentDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.ReportCommentEntity; 5 | import org.apache.ibatis.annotations.Select; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.modules.sys.dao 14 | * @Description: 15 | * @Date: 2019/8/17 0017 19:01 16 | **/ 17 | @Repository 18 | public interface RepCommentDao extends BaseMapper { 19 | 20 | List getUserRepMessNotRead(String username); 21 | 22 | @Select("select rid from reportcomment where com_name = #{arg0} and ris_read = 1") 23 | List selComByUsername(String usrename); 24 | 25 | int updComIsRead(List rid); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/RepFriendlinkDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.RepFriendLinkEntity; 5 | import org.springframework.stereotype.Repository; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.dao 11 | * @Description: 12 | * @Date: 2019/8/19 0019 20:27 13 | **/ 14 | @Repository 15 | public interface RepFriendlinkDao extends BaseMapper { 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/RepGuestDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.RepGuestEntity; 5 | import org.apache.ibatis.annotations.Select; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.modules.sys.dao 14 | * @Description: 15 | * @Date: 2019/8/17 0017 20:38 16 | **/ 17 | @Repository 18 | public interface RepGuestDao extends BaseMapper { 19 | 20 | @Select("select rid from repguest where guest_name = #{arg0} and ris_read = 1") 21 | List findNotGuest(String username); 22 | 23 | int updGuestIsRead(List rid); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/UsersDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; 4 | import com.qiang.modules.sys.entity.UsersEntity; 5 | import org.apache.ibatis.annotations.Param; 6 | import org.apache.ibatis.annotations.Update; 7 | import org.springframework.stereotype.Repository; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.qiang.modules.sys.dao 13 | * @Description: 14 | * @Date: 2019/8/18 0018 10:40 15 | **/ 16 | @Repository 17 | public interface UsersDao extends BaseMapper { 18 | 19 | int updUserMess(UsersEntity users); 20 | 21 | @Update("update users set password = #{password} where phone = #{phone}") 22 | int updUserPwd(@Param("phone") String phone, @Param("password") String password); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/dao/UsersLoginDao.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.dao; 2 | 3 | import com.qiang.modules.sys.entity.VO.UsersVOEntity; 4 | import org.springframework.stereotype.Repository; 5 | 6 | /** 7 | * @Author: qiang 8 | * @ProjectName: adminsystem 9 | * @Package: com.qiang.modules.sys.dao 10 | * @Description: 11 | * @Date: 2019/8/17 0017 12:44 12 | **/ 13 | @Repository 14 | public interface UsersLoginDao { 15 | UsersVOEntity findByPhone(String phone); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/CommentEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | import java.util.Set; 10 | 11 | /** 12 | * @Author: qiang 13 | * @ProjectName: adminsystem 14 | * @Package: com.qiang.modules.sys.entity 15 | * @Description: 评论实体类 16 | * @Date: 2019/7/22 0022 14:58 17 | **/ 18 | @Data 19 | @TableName(value = "comment") 20 | public class CommentEntity implements Serializable { 21 | 22 | private static final long serialVersionUID = -6530678643599384025L; 23 | /** 24 | * 标识符 25 | */ 26 | @TableId 27 | private Long id; 28 | 29 | /** 30 | * 发布博客者id 31 | */ 32 | private String userId; 33 | 34 | /** 35 | * 博客id 36 | */ 37 | private Long blogId; 38 | 39 | /** 40 | * 评论内容 41 | */ 42 | private String message; 43 | 44 | /** 45 | * 创建时间 46 | */ 47 | private String createTime; 48 | 49 | /** 50 | * 点赞人数 51 | */ 52 | private Integer likes; 53 | 54 | /** 55 | * 发布者名称 56 | */ 57 | private String authorName; 58 | 59 | 60 | /** 61 | * 该条评论是否已读 1--未读 0--已读 62 | */ 63 | private Integer isRead = 1; 64 | 65 | /** 66 | * 一条评论有N条消息 67 | */ 68 | @TableField(exist = false) 69 | private Set reportComments; 70 | 71 | 72 | } 73 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/CommentLikesEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.modules.sys.entity 14 | * @Description: 判断用户是否点赞 实体类 15 | * @Date: 2019/7/24 0024 11:02 16 | **/ 17 | @Data 18 | @TableName(value = "commentlikes") 19 | public class CommentLikesEntity implements Serializable { 20 | 21 | private static final long serialVersionUID = -2289974245263677375L; 22 | /** 23 | * 主键 24 | */ 25 | @TableId 26 | private Long id; 27 | 28 | /** 29 | * 博客id 30 | */ 31 | private Long blogId; 32 | 33 | /** 34 | * 评论id 35 | */ 36 | private Long commentId; 37 | 38 | /** 39 | * 用户名 40 | */ 41 | private String likeName; 42 | 43 | /** 44 | * 点赞时间 45 | */ 46 | private String likeTime; 47 | 48 | /** 49 | * 1 -- 未读 0 -- 已读 50 | */ 51 | private Integer isRead = 1; 52 | 53 | /** 54 | * 博客标题 55 | */ 56 | @TableField(exist = false) 57 | private String title; 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/FriendLikesEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * @Author: qiang 10 | * @ProjectName: adminsystem 11 | * @Package: com.qiang.modules.sys.entity 12 | * @Description: 友链点赞用户判断 13 | * @Date: 2019/7/24 0024 19:51 14 | **/ 15 | @Data 16 | @TableName(value = "friendlikes") 17 | public class FriendLikesEntity implements Serializable { 18 | 19 | 20 | private static final long serialVersionUID = -4400820938884482478L; 21 | /** 22 | * 主键 23 | */ 24 | private Long id; 25 | 26 | /** 27 | * 留言者id 28 | */ 29 | private Long friendId; 30 | 31 | /** 32 | * 点赞名称 33 | */ 34 | private String likeName; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/FriendLinkEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | import java.util.Set; 10 | 11 | /** 12 | * @Author: qiang 13 | * @ProjectName: adminsystem 14 | * @Package: com.qiang.modules.sys.entity 15 | * @Description: 友链实体类 16 | * @Date: 2019/7/24 0024 17:13 17 | **/ 18 | @Data 19 | @TableName(value = "friendlink") 20 | public class FriendLinkEntity implements Serializable { 21 | 22 | 23 | private static final long serialVersionUID = -1543921671185779569L; 24 | /** 25 | * 主键 26 | */ 27 | @TableId 28 | private Long id; 29 | 30 | /** 31 | * 留言者id 32 | */ 33 | private String userId; 34 | 35 | /** 36 | * 留言内容 37 | */ 38 | private String message; 39 | 40 | /** 41 | * 创建时间 42 | */ 43 | private String createTime; 44 | 45 | /** 46 | * 点赞数 47 | */ 48 | private Integer likes; 49 | 50 | /** 51 | * 1 -- 未读 0 -- 已读 52 | */ 53 | private Integer isRead = 1; 54 | 55 | /** 56 | * 留言者名称 57 | */ 58 | private String authorName; 59 | 60 | /** 61 | * 一条留言可以有多个评论 62 | */ 63 | @TableField(exist = false) 64 | private Set reportCommentSet; 65 | 66 | } 67 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/FriendurlEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.qiang.modules.sys.entity 13 | * @Description: 14 | * @Date: 2019/8/19 0019 21:29 15 | **/ 16 | @Data 17 | @TableName(value = "friendurl") 18 | public class FriendurlEntity implements Serializable { 19 | private static final long serialVersionUID = -9163902960357555427L; 20 | 21 | @TableId 22 | private Long id; 23 | 24 | /** 25 | * 友链名 26 | */ 27 | private String friendName; 28 | 29 | /** 30 | * 友链地址 31 | */ 32 | private String friendUrl; 33 | 34 | /** 35 | * 创建时间 36 | */ 37 | private String createTime; 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/GuestEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | import java.util.Set; 10 | 11 | /** 12 | * @Author: qiang 13 | * @ProjectName: adminsystem 14 | * @Package: com.qiang.modules.sys.entity 15 | * @Description: 留言实体类 16 | * @Date: 2019/7/24 0024 17:13 17 | **/ 18 | @Data 19 | @TableName(value = "guest") 20 | public class GuestEntity implements Serializable { 21 | 22 | private static final long serialVersionUID = -7136211463796574497L; 23 | /** 24 | * 主键 25 | */ 26 | @TableId 27 | private Long id; 28 | 29 | /** 30 | * 留言者id 31 | */ 32 | private String userId; 33 | 34 | /** 35 | * 留言内容 36 | */ 37 | private String message; 38 | 39 | /** 40 | * 创建时间 41 | */ 42 | private String createTime; 43 | 44 | /** 45 | * 点赞数 46 | */ 47 | private Integer likes; 48 | 49 | /** 50 | * 1 -- 未读 0 -- 已读 51 | */ 52 | private Integer isRead = 1; 53 | 54 | /** 55 | * 留言者名称 56 | */ 57 | private String authorName; 58 | 59 | /** 60 | * 一条留言可以有多个评论 61 | */ 62 | @TableField(exist = false) 63 | private Set reportCommentSet; 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/GuestLikesEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * @Author: qiang 10 | * @ProjectName: adminsystem 11 | * @Package: com.qiang.modules.sys.entity 12 | * @Description: 留言点赞用户判断 13 | * @Date: 2019/7/24 0024 19:51 14 | **/ 15 | @Data 16 | @TableName(value = "guestlikes") 17 | public class GuestLikesEntity implements Serializable { 18 | 19 | private static final long serialVersionUID = -4126217973825926180L; 20 | /** 21 | * 主键 22 | */ 23 | private Long id; 24 | 25 | /** 26 | * 留言者id 27 | */ 28 | private Long guestId; 29 | 30 | /** 31 | * 点赞名称 32 | */ 33 | private String likeName; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/LabelEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.qiang.modules.sys.entity 13 | * @Description: 标签实体库 14 | * @Date: 2019/7/6 0006 11:45 15 | **/ 16 | @Data 17 | @TableName(value = "label") 18 | public class LabelEntity implements Serializable { 19 | 20 | private static final long serialVersionUID = -8912589778594195822L; 21 | @TableId 22 | private String id; 23 | private String labelName; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/PermissionEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableName; 4 | import lombok.Data; 5 | 6 | import java.io.Serializable; 7 | 8 | /** 9 | * @Author: qiang 10 | * @ProjectName: adminsystem 11 | * @Package: com.qiang.modules.sys.entity 12 | * @Description: 权限表 13 | * @Date: 2019/7/11 0011 20:16 14 | **/ 15 | @Data 16 | @TableName(value = "permission") 17 | public class PermissionEntity implements Serializable { 18 | private static final long serialVersionUID = -6885924187336494473L; 19 | private Integer pid; 20 | private String pname; 21 | private String url; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/RepFriendLinkEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.qiang.modules.sys.entity 13 | * @Description: 友链评论实体类 14 | * @Date: 2019/7/24 0024 17:16 15 | **/ 16 | @Data 17 | @TableName(value = "repfriend") 18 | public class RepFriendLinkEntity implements Serializable { 19 | 20 | 21 | private static final long serialVersionUID = 4963923988287900210L; 22 | /** 23 | * 主键 24 | */ 25 | @TableId 26 | private Long rid; 27 | 28 | /** 29 | * 留言条id 30 | */ 31 | private Long friendId; 32 | 33 | /** 34 | * 回复内容 35 | */ 36 | private String repMess; 37 | 38 | /** 39 | * 评论者id 40 | */ 41 | private String rfriendId; 42 | 43 | /** 44 | * 创建时间 45 | */ 46 | private String rcreateTime; 47 | 48 | /** 49 | * 1 - 未读 0 - 已读 50 | */ 51 | private Integer risRead = 1; 52 | 53 | /** 54 | * 评论者名称 55 | */ 56 | private String repName; 57 | 58 | /** 59 | *被评论者名称 60 | */ 61 | private String friendName; 62 | 63 | } 64 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/RepGuestEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.qiang.modules.sys.entity 13 | * @Description: 留言评论实体类 14 | * @Date: 2019/7/24 0024 17:16 15 | **/ 16 | @Data 17 | @TableName(value = "repguest") 18 | public class RepGuestEntity implements Serializable { 19 | 20 | private static final long serialVersionUID = 2692108952240624039L; 21 | /** 22 | * 主键 23 | */ 24 | @TableId 25 | private Long rid; 26 | 27 | /** 28 | * 留言条id 29 | */ 30 | private Long guestId; 31 | 32 | /** 33 | * 回复内容 34 | */ 35 | private String repMess; 36 | 37 | /** 38 | * 评论者id 39 | */ 40 | private String rguestId; 41 | 42 | /** 43 | * 创建时间 44 | */ 45 | private String rcreateTime; 46 | 47 | /** 48 | * 1 - 未读 0 - 已读 49 | */ 50 | private Integer risRead = 1; 51 | 52 | /** 53 | * 评论者名称 54 | */ 55 | private String repName; 56 | 57 | /** 58 | *被评论者名称 59 | */ 60 | private String guestName; 61 | 62 | } 63 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/ReportCommentEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableId; 5 | import com.baomidou.mybatisplus.annotation.TableName; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @Author: qiang 13 | * @ProjectName: adminsystem 14 | * @Package: com.qiang.modules.sys.entity 15 | * @Description: 16 | * @Date: 2019/7/22 0022 18:15 17 | **/ 18 | @Data 19 | @TableName(value = "reportcomment") 20 | public class ReportCommentEntity implements Serializable { 21 | 22 | private static final long serialVersionUID = -5264662268008848306L; 23 | /** 24 | * 标识符 25 | */ 26 | @TableId 27 | private Long rid; 28 | 29 | /** 30 | * 评论文章id 31 | */ 32 | private Long commentId; 33 | 34 | /** 35 | * 内容 36 | */ 37 | private String repMess; 38 | 39 | /** 40 | * 回复者id 41 | */ 42 | private String reportedId; 43 | 44 | /** 45 | * 创建时间 46 | */ 47 | private String rcreateTime; 48 | 49 | /** 50 | * 该条评论是否已读 1--未读 0--已读 51 | */ 52 | private Integer risRead = 1; 53 | 54 | /** 55 | * 回复者名字 56 | */ 57 | private String repName; 58 | 59 | /** 60 | * 被评论者名字 61 | */ 62 | private String comName; 63 | 64 | /** 65 | * 博客id 66 | */ 67 | @TableField(exist = false) 68 | private Long blogId; 69 | 70 | /** 71 | * 博客标题 72 | */ 73 | @TableField(exist = false) 74 | private String title; 75 | 76 | 77 | 78 | } 79 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/RoleEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.util.Set; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.entity 14 | * @Description: 角色表 15 | * @Date: 2019/7/11 0011 20:13 16 | **/ 17 | @Data 18 | @TableName(value = "roles") 19 | public class RoleEntity implements Serializable { 20 | 21 | private static final long serialVersionUID = 2147116123095650916L; 22 | /** 23 | * 标识符 24 | */ 25 | private Integer rid; 26 | 27 | /** 28 | * 角色名 29 | */ 30 | private String rname; 31 | 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/UsersEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.entity 14 | * @Description: 用户信息表 15 | * @Date: 2019/7/4 0004 11:13 16 | **/ 17 | @Data 18 | @TableName(value = "users") 19 | public class UsersEntity implements Serializable { 20 | 21 | 22 | private static final long serialVersionUID = 2091272315817336009L; 23 | /** 24 | * 标识符id 25 | */ 26 | @TableId("id") 27 | private String id; 28 | 29 | /** 30 | * 用户 31 | */ 32 | private String username; 33 | 34 | /** 35 | * 密码 36 | */ 37 | private String password; 38 | 39 | /** 40 | * 手机 41 | */ 42 | private String phone; 43 | 44 | /** 45 | * 性别(0-男 1-女) 46 | */ 47 | private int sex; 48 | 49 | /** 50 | * 最后一次登录时间 51 | */ 52 | private String lastTime; 53 | 54 | /** 55 | * 角色(1-超级管理员 2-普通用户 3-会员) 56 | */ 57 | private int roleId; 58 | 59 | /** 60 | * 真实姓名 61 | */ 62 | private String realname = ""; 63 | 64 | /** 65 | * QQ号 66 | */ 67 | private String qq = ""; 68 | 69 | /** 70 | * 邮箱 71 | */ 72 | private String email = ""; 73 | 74 | /** 75 | * 个人简历 76 | */ 77 | private String intro = ""; 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/VO/BlogMessageVOEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity.VO; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import com.qiang.modules.sys.entity.BlogMessageEntity; 6 | import lombok.Data; 7 | 8 | import java.io.Serializable; 9 | 10 | /** 11 | * @Author: qiang 12 | * @ProjectName: adminsystem 13 | * @Package: com.qiang.modules.sys.entity 14 | * @Description: 15 | * @Date: 2019/7/8 0008 17:32 16 | **/ 17 | @Data 18 | @TableName(value = "blog") 19 | public class BlogMessageVOEntity extends BlogMessageEntity implements Serializable { 20 | 21 | private static final long serialVersionUID = -2401597387508779531L; 22 | /** 23 | * 含HTML文章 24 | */ 25 | @TableField(exist = false) 26 | private String articleHtmlContent; 27 | 28 | /** 29 | * 标签数组 30 | */ 31 | @TableField(exist = false) 32 | private String[] tagValue; 33 | 34 | /** 35 | * 文章地址 36 | */ 37 | @TableField(exist = false) 38 | private String articleUrl; 39 | 40 | /** 41 | * 规定标签 42 | */ 43 | @TableField(exist = false) 44 | private String specificTag; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/VO/BlogUserVO.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity.VO; 2 | 3 | import com.qiang.modules.sys.entity.CommentEntity; 4 | 5 | /** 6 | * @Author: qiang 7 | * @ProjectName: adminsystem 8 | * @Package: com.qiang.modules.sys.entity.VO 9 | * @Description: 评论相关信息 10 | * @Date: 2019/7/22 0022 16:38 11 | **/ 12 | public class BlogUserVO extends CommentEntity { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/VO/RoleVOEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity.VO; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableField; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import com.qiang.modules.sys.entity.PermissionEntity; 6 | import com.qiang.modules.sys.entity.RoleEntity; 7 | import lombok.Data; 8 | 9 | import java.io.Serializable; 10 | import java.util.Set; 11 | 12 | /** 13 | * @Author: qiang 14 | * @ProjectName: adminsystem 15 | * @Package: com.qiang.modules.sys.entity.VO 16 | * @Description: 身份验证 17 | * @Date: 2019/8/17 0017 12:38 18 | **/ 19 | @TableName("roles") 20 | @Data 21 | public class RoleVOEntity extends RoleEntity implements Serializable { 22 | 23 | private static final long serialVersionUID = -4902035294884582203L; 24 | 25 | /** 26 | * 当前角色所具备的权限 27 | */ 28 | @TableField(exist = false) 29 | private Set permissionSet; 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/entity/WebMessageEntity.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.entity; 2 | 3 | import com.baomidou.mybatisplus.annotation.TableId; 4 | import com.baomidou.mybatisplus.annotation.TableName; 5 | import lombok.Data; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.entity 11 | * @Description: 网站信息 12 | * @Date: 2019/8/9 0009 18:01 13 | **/ 14 | @Data 15 | @TableName(value = "web") 16 | public class WebMessageEntity { 17 | 18 | /** 19 | * 主键 20 | */ 21 | @TableId 22 | private String id; 23 | 24 | /** 25 | * 访问量 26 | */ 27 | private Long visitor; 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/AdminService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.common.utils.PagedResult; 4 | import com.qiang.modules.sys.entity.FriendurlEntity; 5 | 6 | /** 7 | * @Author: qiang 8 | * @ProjectName: adminsystem 9 | * @Package: com.qiang.modules.sys.service 10 | * @Description: 11 | * @Date: 2019/8/2 0002 18:00 12 | **/ 13 | public interface AdminService { 14 | 15 | 16 | /** 17 | * 增加友链 18 | * @param friendurlEntity 19 | * @return 20 | */ 21 | int insFriendUrl(FriendurlEntity friendurlEntity); 22 | 23 | 24 | /** 25 | * 全部用户信息 26 | * @return 27 | */ 28 | PagedResult findAllUsers(Integer pageSize, Integer pageNum); 29 | 30 | /** 31 | * 全部友链信息 32 | * @return 33 | */ 34 | PagedResult getAllFriendsUrl(Integer pageSize, Integer pageNum); 35 | 36 | /** 37 | * 全部博客信息 38 | * @return 39 | */ 40 | PagedResult findAllBlogs(Integer pageSize, Integer pageNum); 41 | 42 | 43 | 44 | /** 45 | * 删除用户 46 | * @return 47 | */ 48 | int deleteUsers(String username); 49 | 50 | /** 51 | * 删除友链 52 | * @return 53 | */ 54 | int delFriendUrl(Long id); 55 | 56 | 57 | /** 58 | * 删除博客 59 | * @return 60 | */ 61 | int deleteBlog(Long id); 62 | 63 | // /** 64 | // * 博客编辑 65 | // * @param id 66 | // * @return 67 | // */ 68 | // BlogMessage editByBlogId(Long id); 69 | 70 | 71 | 72 | 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/ArticleService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.common.utils.PagedResult; 4 | 5 | /** 6 | * @Author: qiang 7 | * @ProjectName: adminsystem 8 | * @Package: com.qiang.service 9 | * @Description: 首页操作业务逻辑接口 10 | * @Date: 2019/7/8 0008 15:45 11 | **/ 12 | public interface ArticleService { 13 | 14 | /** 15 | * 分页查询文章 16 | * @param page 显示数据(一页) 17 | * @param pageSize 当前页数 18 | * @return 19 | */ 20 | PagedResult findAllBlog(Integer page, Integer pageSize); 21 | 22 | /** 23 | * 通过标签查询文章 24 | * @param page 25 | * @param pageSize 26 | * @param tag 标签名 27 | * @return 28 | */ 29 | PagedResult findByTag(Integer page, Integer pageSize, String tag); 30 | 31 | /** 32 | * 通过文章归类查询 33 | * @param page 34 | * @param pageSize 35 | * @param categories 36 | * @return 37 | */ 38 | PagedResult findByCategories(Integer page, Integer pageSize, String categories); 39 | 40 | /** 41 | * 通过时间查询 42 | * @param page 43 | * @param pageSize 44 | * @param time 45 | * @return 46 | */ 47 | PagedResult findByTime(Integer page, Integer pageSize, String time); 48 | 49 | /** 50 | * 点赞人数 51 | * @param articleId 52 | * @return 53 | */ 54 | int updLike(long articleId); 55 | 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/AsyncService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.modules.sys.entity.LabelEntity; 4 | import com.qiang.modules.sys.entity.VO.BlogMessageVOEntity; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @Author: qiang 10 | * @ProjectName: adminsystem 11 | * @Package: com.qiang.modules.sys.service 12 | * @Description: 异步任务(数据库和redis保持一致) 13 | * @Date: 2019/8/9 0009 15:21 14 | **/ 15 | public interface AsyncService { 16 | 17 | /** 18 | * 标签名 19 | */ 20 | public void insLabelName(List list); 21 | 22 | /** 23 | * 首页博文 24 | * @param 25 | */ 26 | public void insPageBlog(); 27 | 28 | 29 | /** 30 | * 博客文章访问量 31 | * @param id 32 | */ 33 | public void updBlogLook(Long id, Long look); 34 | 35 | /** 36 | * 存入数据库中手机号 37 | */ 38 | public void insUserPhone(); 39 | 40 | /** 41 | * 存入数据库中用户名 42 | */ 43 | public void insUserName(); 44 | 45 | 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/BlogService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.modules.sys.entity.VO.BlogMessageVOEntity; 4 | 5 | /** 6 | * @Author: qiang 7 | * @ProjectName: adminsystem 8 | * @Package: com.qiang.service 9 | * @Description: 博客发布接口 10 | * @Date: 2019/7/6 0006 15:05 11 | **/ 12 | public interface BlogService { 13 | 14 | /** 15 | * 博客发布 16 | * @param blogMessage 博客实体类 17 | * @return 18 | */ 19 | void publishBlog(BlogMessageVOEntity blogMessage); 20 | 21 | /** 22 | * 编辑文章 23 | * @param blogMessageVO 24 | * @return 25 | */ 26 | Boolean updBlogByBlogId(BlogMessageVOEntity blogMessageVO); 27 | 28 | /** 29 | * 通过id查询该文章详情 30 | * @param id 31 | * @return 32 | */ 33 | BlogMessageVOEntity findBlogById(long id); 34 | 35 | /** 36 | * 修改回显文章相关信息 37 | * @param id 38 | * @return 39 | */ 40 | BlogMessageVOEntity EchoBlogByBlogId(long id); 41 | 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/FriendLinkService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.modules.sys.entity.*; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.modules.sys.service 11 | * @Description: 12 | * @Date: 2019/8/19 0019 19:14 13 | **/ 14 | public interface FriendLinkService { 15 | 16 | /** 17 | * 查询全部友链 18 | * @return 19 | */ 20 | List getAllFriend(); 21 | 22 | 23 | /** 24 | * 查询全部留言 25 | * @return 26 | */ 27 | List getAllGuest(); 28 | 29 | /** 30 | * 新增留言 31 | * @param guest 32 | * @return 33 | */ 34 | List insGuest(FriendLinkEntity guest); 35 | 36 | /** 37 | * 新增留言评论 38 | * @param repGuest 39 | * @return 40 | */ 41 | List insRepGuest(RepFriendLinkEntity repGuest); 42 | 43 | /** 44 | * 用户是否点赞 45 | * @param guestLikes 46 | * @return 47 | */ 48 | boolean findIsLikes(FriendLikesEntity guestLikes); 49 | 50 | /** 51 | * 删除用户点赞 52 | * @param guestLikes 53 | * @return 54 | */ 55 | int delIsLikes(FriendLikesEntity guestLikes); 56 | 57 | /** 58 | * 新增用户点赞信息 59 | * @param guestLikes 60 | * @return 61 | */ 62 | List insIsLikes(FriendLikesEntity guestLikes); 63 | 64 | /** 65 | * 新增点赞 66 | * @param id 67 | * @return 68 | */ 69 | int updInsLikes(Long id); 70 | 71 | /** 72 | * 减少点赞 73 | * @param id 74 | * @return 75 | */ 76 | List updDesLikes(Long id); 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/GuestService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.modules.sys.entity.GuestEntity; 4 | import com.qiang.modules.sys.entity.GuestLikesEntity; 5 | import com.qiang.modules.sys.entity.RepGuestEntity; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.qiang.modules.sys.service 13 | * @Description: 留言接口 14 | * @Date: 2019/7/24 0024 17:30 15 | **/ 16 | public interface GuestService { 17 | 18 | 19 | /** 20 | * 查询全部留言 21 | * @return 22 | */ 23 | List getAllGuest(); 24 | 25 | /** 26 | * 新增留言 27 | * @param guest 28 | * @return 29 | */ 30 | List insGuest(GuestEntity guest); 31 | 32 | /** 33 | * 新增留言评论 34 | * @param repGuest 35 | * @return 36 | */ 37 | List insRepGuest(RepGuestEntity repGuest); 38 | 39 | /** 40 | * 用户是否点赞 41 | * @param guestLikes 42 | * @return 43 | */ 44 | boolean findIsLikes(GuestLikesEntity guestLikes); 45 | 46 | /** 47 | * 删除用户点赞 48 | * @param guestLikes 49 | * @return 50 | */ 51 | int delIsLikes(GuestLikesEntity guestLikes); 52 | 53 | /** 54 | * 新增用户点赞信息 55 | * @param guestLikes 56 | * @return 57 | */ 58 | List insIsLikes(GuestLikesEntity guestLikes); 59 | 60 | /** 61 | * 新增点赞 62 | * @param id 63 | * @return 64 | */ 65 | int updInsLikes(Long id); 66 | 67 | /** 68 | * 减少点赞 69 | * @param id 70 | * @return 71 | */ 72 | List updDesLikes(Long id); 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/IndexService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | /** 4 | * @Author: qiang 5 | * @ProjectName: adminsystem 6 | * @Package: com.qiang.modules.sys.service 7 | * @Description: 网页信息 8 | * @Date: 2019/8/8 0008 16:09 9 | **/ 10 | public interface IndexService { 11 | 12 | /** 13 | * 文章总数 14 | * @return 15 | */ 16 | public Long myArticlesCount(); 17 | 18 | /** 19 | * 标签总数 20 | * @return 21 | */ 22 | public int myLabelsCount(); 23 | 24 | 25 | /** 26 | * 评论总数 27 | * @return 28 | */ 29 | public Integer myReportsCount(); 30 | 31 | /** 32 | * 留言总数 33 | * @return 34 | */ 35 | public Integer myGuestCount(); 36 | 37 | /** 38 | * 网站访问量 39 | * @return 40 | */ 41 | public int myWebCount(); 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/LabelService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.modules.sys.entity.LabelEntity; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @Author: qiang 9 | * @ProjectName: adminsystem 10 | * @Package: com.qiang.service 11 | * @Description: 标签业务接口 12 | * @Date: 2019/7/6 0006 11:47 13 | **/ 14 | public interface LabelService { 15 | 16 | /** 17 | * 新增标签 18 | * @param label 标签名 19 | * @return 20 | */ 21 | int insLabel(String[] label); 22 | 23 | /** 24 | * 查询标签全部 25 | * @return 26 | */ 27 | List selAllLabel(); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/RedisService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.modules.sys.entity.VO.BlogMessageVOEntity; 4 | 5 | /** 6 | * @Author: qiang 7 | * @ProjectName: adminsystem 8 | * @Package: com.qiang.modules.sys.service 9 | * @Description: 10 | * @Date: 2019/8/17 0017 12:15 11 | **/ 12 | public interface RedisService { 13 | 14 | /** 15 | * 手机号和用户名存入缓存 16 | * @param phone 17 | * @param username 18 | */ 19 | public void SavePhoneAndUsername(String phone, String username); 20 | 21 | /** 22 | * 保存博客发布信息 23 | * @param blogMessageVOEntity 24 | */ 25 | public void SaveEditBlog(BlogMessageVOEntity blogMessageVOEntity); 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/RegisterService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | import com.qiang.modules.sys.entity.UsersEntity; 4 | 5 | /** 6 | * @Author: qiang 7 | * @ProjectName: adminsystem 8 | * @Package: com.qiang.modules.sys.service 9 | * @Description: 10 | * @Date: 2019/8/9 0009 17:30 11 | **/ 12 | public interface RegisterService { 13 | 14 | 15 | /** 16 | * 注册 17 | * @param users 18 | * @return 19 | */ 20 | public int insUsers(UsersEntity users); 21 | 22 | /** 23 | * 手机号检测 24 | * @param phone 25 | * @return 26 | */ 27 | public int findByPhone(String phone); 28 | 29 | /** 30 | * 用户名检测 31 | * @param username 32 | * @return 33 | */ 34 | public int findByUsername(String username); 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/ScheduledService.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service; 2 | 3 | /** 4 | * @Author: qiang 5 | * @ProjectName: adminsystem 6 | * @Package: com.qiang.modules.sys.service 7 | * @Description: 定时任务存储信息 8 | * @Date: 2019/8/9 0009 16:31 9 | **/ 10 | public interface ScheduledService { 11 | 12 | /** 13 | * 网站浏览次数存入数据库 14 | */ 15 | public void visitorCustom(); 16 | 17 | /** 18 | * 博客访问量 19 | */ 20 | public void lookBlog(); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/impl/RedisServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service.impl; 2 | 3 | import com.qiang.common.utils.Constant; 4 | import com.qiang.common.utils.RedisOperator; 5 | import com.qiang.modules.sys.entity.VO.BlogMessageVOEntity; 6 | import com.qiang.modules.sys.service.RedisService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | import org.springframework.transaction.annotation.Propagation; 10 | import org.springframework.transaction.annotation.Transactional; 11 | 12 | /** 13 | * @Author: qiang 14 | * @ProjectName: adminsystem 15 | * @Package: com.qiang.modules.sys.service.impl 16 | * @Description: 17 | * @Date: 2019/8/17 0017 12:16 18 | **/ 19 | @Service 20 | public class RedisServiceImpl implements RedisService { 21 | 22 | @Autowired 23 | private RedisOperator redisOperator; 24 | 25 | @Transactional(propagation = Propagation.REQUIRED) 26 | @Override 27 | public void SavePhoneAndUsername(String phone, String username) { 28 | // 手机号加入缓存 29 | redisOperator.hset(Constant.USER_PHONE_EXIST, phone, 1); 30 | // 用户名加入缓存 31 | redisOperator.hset(Constant.USER_NAME_EXIST, username, 1); 32 | } 33 | 34 | @Transactional(propagation = Propagation.REQUIRED) 35 | @Override 36 | public void SaveEditBlog(BlogMessageVOEntity blogMessageVOEntity) { 37 | // 存入缓存中(首页分页查询) 38 | redisOperator.lpush(Constant.PAGE_BLOG, blogMessageVOEntity); 39 | // 存入缓存(博客具体详情) 40 | redisOperator.hset(Constant.BLOG_DETAIL, String.valueOf(blogMessageVOEntity.getId()), blogMessageVOEntity); 41 | // 文章浏览次数 42 | redisOperator.set(Constant.BLOG_DETAIL + blogMessageVOEntity.getId(), 0); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/service/impl/ScheduledServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.service.impl; 2 | 3 | import com.qiang.common.utils.Constant; 4 | import com.qiang.common.utils.RedisOperator; 5 | import com.qiang.modules.sys.dao.IndexDao; 6 | import com.qiang.modules.sys.service.ScheduledService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.scheduling.annotation.Scheduled; 9 | import org.springframework.stereotype.Service; 10 | import org.springframework.transaction.annotation.Propagation; 11 | import org.springframework.transaction.annotation.Transactional; 12 | 13 | /** 14 | * @Author: qiang 15 | * @ProjectName: adminsystem 16 | * @Package: com.qiang.modules.sys.service.impl 17 | * @Description: 18 | * @Date: 2019/8/9 0009 16:35 19 | **/ 20 | @Service 21 | public class ScheduledServiceImpl implements ScheduledService { 22 | 23 | @Autowired 24 | private IndexDao indexDao; 25 | 26 | @Autowired 27 | private RedisOperator redisOperator; 28 | 29 | /** 30 | * second(秒),minute(分),hour(时),day of month(日),month(月),day of week(周几) 31 | * 0 * * * * MON-FRI 32 | */ 33 | @Scheduled(cron = "0 0/10 * * * ?") 34 | @Transactional(propagation = Propagation.REQUIRED) 35 | @Override 36 | public void visitorCustom() { 37 | indexDao.updWebVisitorCount((int)redisOperator.get(Constant.BLOG_VISIT_COUNT)); 38 | } 39 | 40 | @Scheduled(cron = "0 5 * * * ?") 41 | @Transactional(propagation = Propagation.REQUIRED) 42 | @Override 43 | public void lookBlog() { 44 | 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/shiro/CustomSessionIdGenerator.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.shiro; 2 | 3 | import org.apache.shiro.session.Session; 4 | import org.apache.shiro.session.mgt.eis.SessionIdGenerator; 5 | 6 | import java.io.Serializable; 7 | import java.util.UUID; 8 | 9 | /** 10 | * @Author: qiang 11 | * @ProjectName: adminsystem 12 | * @Package: com.qiang.modules.sys.shiro 13 | * @Description: 14 | * @Date: 2019/7/30 0030 18:24 15 | **/ 16 | public class CustomSessionIdGenerator implements SessionIdGenerator { 17 | @Override 18 | public Serializable generateId(Session session) { 19 | return "qzBlog" + UUID.randomUUID().toString().replace("-", ""); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/shiro/CustomSessionManager.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.shiro; 2 | 3 | import org.apache.shiro.web.servlet.ShiroHttpServletRequest; 4 | import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; 5 | import org.apache.shiro.web.util.WebUtils; 6 | 7 | import javax.servlet.ServletRequest; 8 | import javax.servlet.ServletResponse; 9 | import java.io.Serializable; 10 | 11 | /** 12 | * @Author: qiang 13 | * @ProjectName: adminsystem 14 | * @Package: com.qiang.config 15 | * @Description: shiro中sessionManager自定义会话管理 16 | * @Date: 2019/7/28 0028 21:48 17 | **/ 18 | public class CustomSessionManager extends DefaultWebSessionManager { 19 | 20 | private static final String AUTHORIZATION = "token"; 21 | 22 | public CustomSessionManager() { 23 | super(); 24 | } 25 | 26 | @Override 27 | protected Serializable getSessionId(ServletRequest request, ServletResponse response) { 28 | String sessionId = WebUtils.toHttp(request).getHeader(AUTHORIZATION); 29 | if (sessionId != null) { 30 | request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE, 31 | ShiroHttpServletRequest.COOKIE_SESSION_ID_SOURCE); 32 | request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID, sessionId); 33 | //automatically mark it valid here. If it is invalid, the 34 | //onUnknownSession method below will be invoked and we'll remove the attribute at that time. 35 | request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID, Boolean.TRUE); 36 | return sessionId; 37 | } else { 38 | return super.getSessionId(request, response); 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/qiang/modules/sys/shiro/ShiroMD5.java: -------------------------------------------------------------------------------- 1 | package com.qiang.modules.sys.shiro; 2 | 3 | import org.apache.shiro.crypto.hash.SimpleHash; 4 | import org.apache.shiro.util.ByteSource; 5 | 6 | /** 7 | * @Author: qiang 8 | * @ProjectName: adminsystem 9 | * @Package: com.qiang.shiro 10 | * @Description:shiroMD5加密类 11 | * @Date: 2019/6/21 0021 13:17 12 | **/ 13 | public class ShiroMD5 { 14 | 15 | public static Object MD5(String username,String password){ 16 | String hashAlgorithName = "MD5"; 17 | int hashIterations = 1024;//加密次数 18 | ByteSource credentialsSalt = ByteSource.Util.bytes(username); 19 | Object obj = new SimpleHash(hashAlgorithName, password, credentialsSalt, hashIterations); 20 | return obj; 21 | } 22 | 23 | public static void main(String[] args) { 24 | System.out.println(MD5("15383466854", "123456")); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | # spring.thymeleaf.cache=false 2 | spring.thymeleaf.mode=LEGACYHTML5 3 | -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | ########################### 2 | ######### 模式匹配 3 | ########################## 4 | spring: 5 | # 环境 dev|test|prod 6 | profiles: 7 | active: dev 8 | 9 | ############################# 10 | ###### mybatis-plus配置 11 | ############################# 12 | mybatis-plus: 13 | mapper-locations: classpath:mappering/*.xml 14 | #实体扫描,多个package用逗号或者分号分隔 15 | type-aliases-package: com.qiang.modules.*.entity 16 | global-config: 17 | db-config: 18 | table-underline: true 19 | db-type: mysql -------------------------------------------------------------------------------- /src/main/resources/mappering/CommentDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 35 | 36 | -------------------------------------------------------------------------------- /src/main/resources/mappering/CommentLikeDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 14 | 15 | 16 | update commentlikes c 17 | set c.is_read = 0 18 | where id in 19 | 20 | #{item} 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/resources/mappering/FriendlinkDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/resources/mappering/GuestDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/resources/mappering/RepCommentDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 14 | 15 | 16 | update reportcomment r 17 | set r.ris_read = 0 18 | where rid in 19 | 20 | #{item} 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/resources/mappering/RepGuestDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | update repguest c 9 | set c.ris_read = 0 10 | where rid in 11 | 12 | #{item} 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/main/resources/mappering/UsersDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | update users 9 | set realname = #{realname}, qq = #{qq}, email = #{email}, intro = #{intro} 10 | where username = #{username} 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/main/resources/mappering/UsersLoginDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 39 | 40 | -------------------------------------------------------------------------------- /src/main/resources/static/assets/css/app.css: -------------------------------------------------------------------------------- 1 | /* Write your styles */ -------------------------------------------------------------------------------- /src/main/resources/static/assets/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/resources/static/assets/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/assets/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/assets/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/assets/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/app-icon72x72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/app-icon72x72@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/admin-chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/admin-chrome.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/admin-firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/admin-firefox.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/admin-ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/admin-ie.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/admin-opera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/admin-opera.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/admin-safari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/admin-safari.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/adminPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/adminPage.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/blogPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/blogPage.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/landing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/landing.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/landingPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/landingPage.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/loginPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/loginPage.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/examples/sidebarPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/examples/sidebarPage.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/favicon.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/i/startup-640x1096.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/assets/i/startup-640x1096.png -------------------------------------------------------------------------------- /src/main/resources/static/assets/js/app.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | 4 | $(function() { 5 | var $fullText = $('.admin-fullText'); 6 | $('#admin-fullscreen').on('click', function() { 7 | $.AMUI.fullscreen.toggle(); 8 | }); 9 | 10 | $(document).on($.AMUI.fullscreen.raw.fullscreenchange, function() { 11 | $fullText.text($.AMUI.fullscreen.isFullscreen ? '退出全屏' : '开启全屏'); 12 | }); 13 | }); 14 | })(jQuery); 15 | -------------------------------------------------------------------------------- /src/main/resources/static/img/errorpage/403.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/img/errorpage/403.jpg -------------------------------------------------------------------------------- /src/main/resources/static/img/errorpage/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/img/errorpage/404.png -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.4 MIT License By https://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/font/iconfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/font/iconfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/layui/font/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/font/iconfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/0.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/1.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/10.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/11.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/12.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/13.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/14.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/15.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/16.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/17.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/18.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/19.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/2.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/20.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/21.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/22.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/23.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/24.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/25.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/26.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/27.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/28.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/29.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/3.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/30.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/31.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/32.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/33.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/34.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/35.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/36.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/37.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/38.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/39.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/4.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/40.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/41.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/42.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/43.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/44.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/45.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/46.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/47.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/48.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/49.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/5.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/50.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/51.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/52.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/53.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/54.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/55.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/56.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/57.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/58.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/59.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/6.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/60.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/61.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/62.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/63.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/64.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/65.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/66.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/67.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/68.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/69.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/7.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/70.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/71.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/8.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/layui/images/face/9.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/lay/modules/code.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.4 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
  1. '+o.replace(/[\r\t\n]+/g,"
  2. ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend('

'+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /src/main/resources/static/layui/lay/modules/laytpl.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.4 MIT License By https://www.layui.com */ 2 | ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)}); -------------------------------------------------------------------------------- /src/main/resources/static/myPicture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/myPicture.jpg -------------------------------------------------------------------------------- /src/main/resources/static/style/SuperAdmin.css: -------------------------------------------------------------------------------- 1 | .admin-main { 2 | padding: 0; 3 | } 4 | 5 | .qz-show { 6 | display: block; 7 | } -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/editormd-logo.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/fonts/editormd-logo.eot -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/editormd-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/editormd-logo.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/fonts/editormd-logo.ttf -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/editormd-logo.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/fonts/editormd-logo.woff -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/images/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/images/4.jpg -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/images/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/images/7.jpg -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/images/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/images/8.jpg -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/images/editormd-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/images/editormd-screenshot.png -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/css/editormd/images/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/display/fullscreen.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 | CodeMirror.defineOption("fullScreen", false, function(cm, val, old) { 15 | if (old == CodeMirror.Init) old = false; 16 | if (!old == !val) return; 17 | if (val) setFullscreen(cm); 18 | else setNormal(cm); 19 | }); 20 | 21 | function setFullscreen(cm) { 22 | var wrap = cm.getWrapperElement(); 23 | cm.state.fullScreenRestore = {scrollTop: window.pageYOffset, scrollLeft: window.pageXOffset, 24 | width: wrap.style.width, height: wrap.style.height}; 25 | wrap.style.width = ""; 26 | wrap.style.height = "auto"; 27 | wrap.className += " CodeMirror-fullscreen"; 28 | document.documentElement.style.overflow = "hidden"; 29 | cm.refresh(); 30 | } 31 | 32 | function setNormal(cm) { 33 | var wrap = cm.getWrapperElement(); 34 | wrap.className = wrap.className.replace(/\s*CodeMirror-fullscreen\b/, ""); 35 | document.documentElement.style.overflow = ""; 36 | var info = cm.state.fullScreenRestore; 37 | wrap.style.width = info.width; wrap.style.height = info.height; 38 | window.scrollTo(info.scrollLeft, info.scrollTop); 39 | cm.refresh(); 40 | } 41 | }); 42 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/fold/indent-fold.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 | CodeMirror.registerHelper("fold", "indent", function(cm, start) { 15 | var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line); 16 | if (!/\S/.test(firstLine)) return; 17 | var getIndent = function(line) { 18 | return CodeMirror.countColumn(line, null, tabSize); 19 | }; 20 | var myIndent = getIndent(firstLine); 21 | var lastLineInFold = null; 22 | // Go through lines until we find a line that definitely doesn't belong in 23 | // the block we're folding, or to the end. 24 | for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) { 25 | var curLine = cm.getLine(i); 26 | var curIndent = getIndent(curLine); 27 | if (curIndent > myIndent) { 28 | // Lines with a greater indent are considered part of the block. 29 | lastLineInFold = i; 30 | } else if (!/\S/.test(curLine)) { 31 | // Empty lines might be breaks within the block we're trying to fold. 32 | } else { 33 | // A non-empty line at an indent equal to or less than ours marks the 34 | // start of another block. 35 | break; 36 | } 37 | } 38 | if (lastLineInFold) return { 39 | from: CodeMirror.Pos(start.line, firstLine.length), 40 | to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length) 41 | }; 42 | }); 43 | 44 | }); 45 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/fold/markdown-fold.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 | CodeMirror.registerHelper("fold", "markdown", function(cm, start) { 15 | var maxDepth = 100; 16 | 17 | function isHeader(lineNo) { 18 | var tokentype = cm.getTokenTypeAt(CodeMirror.Pos(lineNo, 0)); 19 | return tokentype && /\bheader\b/.test(tokentype); 20 | } 21 | 22 | function headerLevel(lineNo, line, nextLine) { 23 | var match = line && line.match(/^#+/); 24 | if (match && isHeader(lineNo)) return match[0].length; 25 | match = nextLine && nextLine.match(/^[=\-]+\s*$/); 26 | if (match && isHeader(lineNo + 1)) return nextLine[0] == "=" ? 1 : 2; 27 | return maxDepth; 28 | } 29 | 30 | var firstLine = cm.getLine(start.line), nextLine = cm.getLine(start.line + 1); 31 | var level = headerLevel(start.line, firstLine, nextLine); 32 | if (level === maxDepth) return undefined; 33 | 34 | var lastLineNo = cm.lastLine(); 35 | var end = start.line, nextNextLine = cm.getLine(end + 2); 36 | while (end < lastLineNo) { 37 | if (headerLevel(end + 1, nextLine, nextNextLine) <= level) break; 38 | ++end; 39 | nextLine = nextNextLine; 40 | nextNextLine = cm.getLine(end + 2); 41 | } 42 | 43 | return { 44 | from: CodeMirror.Pos(start.line, firstLine.length), 45 | to: CodeMirror.Pos(end, cm.getLine(end).length) 46 | }; 47 | }); 48 | 49 | }); 50 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/hint/anyword-hint.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 | var WORD = /[\w$]+/, RANGE = 500; 15 | 16 | CodeMirror.registerHelper("hint", "anyword", function(editor, options) { 17 | var word = options && options.word || WORD; 18 | var range = options && options.range || RANGE; 19 | var cur = editor.getCursor(), curLine = editor.getLine(cur.line); 20 | var end = cur.ch, start = end; 21 | while (start && word.test(curLine.charAt(start - 1))) --start; 22 | var curWord = start != end && curLine.slice(start, end); 23 | 24 | var list = [], seen = {}; 25 | var re = new RegExp(word.source, "g"); 26 | for (var dir = -1; dir <= 1; dir += 2) { 27 | var line = cur.line, endLine = Math.min(Math.max(line + dir * range, editor.firstLine()), editor.lastLine()) + dir; 28 | for (; line != endLine; line += dir) { 29 | var text = editor.getLine(line), m; 30 | while (m = re.exec(text)) { 31 | if (line == cur.line && m[0] === curWord) continue; 32 | if ((!curWord || m[0].lastIndexOf(curWord, 0) == 0) && !Object.prototype.hasOwnProperty.call(seen, m[0])) { 33 | seen[m[0]] = true; 34 | list.push(m[0]); 35 | } 36 | } 37 | } 38 | } 39 | return {list: list, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)}; 40 | }); 41 | }); 42 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/lint/coffeescript-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 coffeelint.js from http://www.coffeelint.org/js/coffeelint.js 5 | 6 | // declare global: coffeelint 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", "coffeescript", function(text) { 19 | var found = []; 20 | var parseError = function(err) { 21 | var loc = err.lineNumber; 22 | found.push({from: CodeMirror.Pos(loc-1, 0), 23 | to: CodeMirror.Pos(loc, 0), 24 | severity: err.level, 25 | message: err.message}); 26 | }; 27 | try { 28 | var res = coffeelint.lint(text); 29 | for(var i = 0; i < res.length; i++) { 30 | parseError(res[i]); 31 | } 32 | } catch(e) { 33 | found.push({from: CodeMirror.Pos(e.location.first_line, 0), 34 | to: CodeMirror.Pos(e.location.last_line, e.location.last_column), 35 | severity: 'error', 36 | message: e.message}); 37 | } 38 | return found; 39 | }); 40 | 41 | }); 42 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/lint/css-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 csslint.js from https://github.com/stubbornella/csslint 5 | 6 | // declare global: CSSLint 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", "css", function(text) { 19 | var found = []; 20 | if (!window.CSSLint) return found; 21 | var results = CSSLint.verify(text), messages = results.messages, message = null; 22 | for ( var i = 0; i < messages.length; i++) { 23 | message = messages[i]; 24 | var startLine = message.line -1, endLine = message.line -1, startCol = message.col -1, endCol = message.col; 25 | found.push({ 26 | from: CodeMirror.Pos(startLine, startCol), 27 | to: CodeMirror.Pos(endLine, endCol), 28 | message: message.message, 29 | severity : message.type 30 | }); 31 | } 32 | return found; 33 | }); 34 | 35 | }); 36 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/runmode/colorize.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"), require("./runmode")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "./runmode"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var isBlock = /^(p|li|div|h\\d|pre|blockquote|td)$/; 15 | 16 | function textContent(node, out) { 17 | if (node.nodeType == 3) return out.push(node.nodeValue); 18 | for (var ch = node.firstChild; ch; ch = ch.nextSibling) { 19 | textContent(ch, out); 20 | if (isBlock.test(node.nodeType)) out.push("\n"); 21 | } 22 | } 23 | 24 | CodeMirror.colorize = function(collection, defaultMode) { 25 | if (!collection) collection = document.body.getElementsByTagName("pre"); 26 | 27 | for (var i = 0; i < collection.length; ++i) { 28 | var node = collection[i]; 29 | var mode = node.getAttribute("data-lang") || defaultMode; 30 | if (!mode) continue; 31 | 32 | var text = []; 33 | textContent(node, text); 34 | node.innerHTML = ""; 35 | CodeMirror.runMode(text.join(""), mode, node); 36 | 37 | node.className += " cm-s-default"; 38 | } 39 | }; 40 | }); 41 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/scroll/scrollpastend.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 | CodeMirror.defineOption("scrollPastEnd", false, function(cm, val, old) { 15 | if (old && old != CodeMirror.Init) { 16 | cm.off("change", onChange); 17 | cm.off("refresh", updateBottomMargin); 18 | cm.display.lineSpace.parentNode.style.paddingBottom = ""; 19 | cm.state.scrollPastEndPadding = null; 20 | } 21 | if (val) { 22 | cm.on("change", onChange); 23 | cm.on("refresh", updateBottomMargin); 24 | updateBottomMargin(cm); 25 | } 26 | }); 27 | 28 | function onChange(cm, change) { 29 | if (CodeMirror.changeEnd(change).line == cm.lastLine()) 30 | updateBottomMargin(cm); 31 | } 32 | 33 | function updateBottomMargin(cm) { 34 | var padding = ""; 35 | if (cm.lineCount() > 1) { 36 | var totalH = cm.display.scroller.clientHeight - 30, 37 | lastLineH = cm.getLineHandle(cm.lastLine()).height; 38 | padding = (totalH - lastLineH) + "px"; 39 | } 40 | if (cm.state.scrollPastEndPadding != padding) { 41 | cm.state.scrollPastEndPadding = padding; 42 | cm.display.lineSpace.parentNode.style.paddingBottom = padding; 43 | cm.setSize(); 44 | } 45 | } 46 | }); 47 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/scroll/simplescrollbars.css: -------------------------------------------------------------------------------- 1 | .CodeMirror-simplescroll-horizontal div, .CodeMirror-simplescroll-vertical div { 2 | position: absolute; 3 | background: #ccc; 4 | -moz-box-sizing: border-box; 5 | box-sizing: border-box; 6 | border: 1px solid #bbb; 7 | border-radius: 2px; 8 | } 9 | 10 | .CodeMirror-simplescroll-horizontal, .CodeMirror-simplescroll-vertical { 11 | position: absolute; 12 | z-index: 6; 13 | background: #eee; 14 | } 15 | 16 | .CodeMirror-simplescroll-horizontal { 17 | bottom: 0; left: 0; 18 | height: 8px; 19 | } 20 | .CodeMirror-simplescroll-horizontal div { 21 | bottom: 0; 22 | height: 100%; 23 | } 24 | 25 | .CodeMirror-simplescroll-vertical { 26 | right: 0; top: 0; 27 | width: 8px; 28 | } 29 | .CodeMirror-simplescroll-vertical div { 30 | right: 0; 31 | width: 100%; 32 | } 33 | 34 | 35 | .CodeMirror-overlayscroll .CodeMirror-scrollbar-filler, .CodeMirror-overlayscroll .CodeMirror-gutter-filler { 36 | display: none; 37 | } 38 | 39 | .CodeMirror-overlayscroll-horizontal div, .CodeMirror-overlayscroll-vertical div { 40 | position: absolute; 41 | background: #bcd; 42 | border-radius: 3px; 43 | } 44 | 45 | .CodeMirror-overlayscroll-horizontal, .CodeMirror-overlayscroll-vertical { 46 | position: absolute; 47 | z-index: 6; 48 | } 49 | 50 | .CodeMirror-overlayscroll-horizontal { 51 | bottom: 0; left: 0; 52 | height: 6px; 53 | } 54 | .CodeMirror-overlayscroll-horizontal div { 55 | bottom: 0; 56 | height: 100%; 57 | } 58 | 59 | .CodeMirror-overlayscroll-vertical { 60 | right: 0; top: 0; 61 | width: 6px; 62 | } 63 | .CodeMirror-overlayscroll-vertical div { 64 | right: 0; 65 | width: 100%; 66 | } 67 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/addon/tern/worker.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | // declare global: tern, server 5 | 6 | var server; 7 | 8 | this.onmessage = function(e) { 9 | var data = e.data; 10 | switch (data.type) { 11 | case "init": return startServer(data.defs, data.plugins, data.scripts); 12 | case "add": return server.addFile(data.name, data.text); 13 | case "del": return server.delFile(data.name); 14 | case "req": return server.request(data.body, function(err, reqData) { 15 | postMessage({id: data.id, body: reqData, err: err && String(err)}); 16 | }); 17 | case "getFile": 18 | var c = pending[data.id]; 19 | delete pending[data.id]; 20 | return c(data.err, data.text); 21 | default: throw new Error("Unknown message type: " + data.type); 22 | } 23 | }; 24 | 25 | var nextId = 0, pending = {}; 26 | function getFile(file, c) { 27 | postMessage({type: "getFile", name: file, id: ++nextId}); 28 | pending[nextId] = c; 29 | } 30 | 31 | function startServer(defs, plugins, scripts) { 32 | if (scripts) importScripts.apply(null, scripts); 33 | 34 | server = new tern.Server({ 35 | getFile: getFile, 36 | async: true, 37 | defs: defs, 38 | plugins: plugins 39 | }); 40 | } 41 | 42 | var console = { 43 | log: function(v) { postMessage({type: "debug", message: v}); } 44 | }; 45 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/diff/diff.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 | CodeMirror.defineMode("diff", function() { 15 | 16 | var TOKEN_NAMES = { 17 | '+': 'positive', 18 | '-': 'negative', 19 | '@': 'meta' 20 | }; 21 | 22 | return { 23 | token: function(stream) { 24 | var tw_pos = stream.string.search(/[\t ]+?$/); 25 | 26 | if (!stream.sol() || tw_pos === 0) { 27 | stream.skipToEnd(); 28 | return ("error " + ( 29 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 30 | } 31 | 32 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 33 | 34 | if (tw_pos === -1) { 35 | stream.skipToEnd(); 36 | } else { 37 | stream.pos = tw_pos; 38 | } 39 | 40 | return token_name; 41 | } 42 | }; 43 | }); 44 | 45 | CodeMirror.defineMIME("text/x-diff", "diff"); 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/ecl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ECL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ECL mode

27 |
45 | 48 | 49 |

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

50 |

MIME types defined: text/x-ecl.

51 | 52 |
53 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/gherkin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gherkin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gherkin mode

27 |
42 | 45 | 46 |

MIME types defined: text/x-feature.

47 | 48 |
49 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/http/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HTTP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

HTTP mode

27 | 28 | 29 |
39 | 40 | 43 | 44 |

MIME types defined: message/http.

45 |
46 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/javascript/typescript.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TypeScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TypeScript mode

27 | 28 | 29 |
51 | 52 | 59 | 60 |

This is a specialization of the JavaScript mode.

61 |
62 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/ntriples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: NTriples mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 28 | 29 |
30 |

NTriples mode

31 |
32 | 39 |
40 | 41 | 44 |

MIME types defined: text/n-triples.

45 |
46 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/pascal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pascal mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pascal mode

27 | 28 | 29 |
52 | 53 | 59 | 60 |

MIME types defined: text/x-pascal.

61 |
62 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/pig/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pig Latin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pig Latin mode

27 |
39 | 40 | 47 | 48 |

49 | Simple mode that handles Pig Latin language. 50 |

51 | 52 |

MIME type defined: text/x-pig 53 | (PIG code) 54 | 55 |

56 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/properties/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Properties files mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Properties files mode

27 |
46 | 49 | 50 |

MIME types defined: text/x-properties, 51 | text/x-ini.

52 | 53 |
54 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/rust/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Rust mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Rust mode

27 | 28 | 29 |
52 | 53 | 58 | 59 |

MIME types defined: text/x-rustsrc.

60 |
61 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/solr/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Solr mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 20 | 33 | 34 |
35 |

Solr mode

36 | 37 |
38 | 47 |
48 | 49 | 55 | 56 |

MIME types defined: text/x-solr.

57 |
58 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/spreadsheet/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Spreadsheet mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Spreadsheet mode

28 |
29 | 30 | 37 | 38 |

MIME types defined: text/x-spreadsheet.

39 | 40 |

The Spreadsheet Mode

41 |

Created by Robert Plummer

42 |
43 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | } -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/turtle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Turtle mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Turtle mode

27 |
41 | 47 | 48 |

MIME types defined: text/turtle.

49 | 50 |
51 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/vbscript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: VBScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

VBScript mode

27 | 28 | 29 |
46 | 47 | 53 | 54 |

MIME types defined: text/vbscript.

55 |
56 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/mode/z80/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Z80 assembly mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Z80 assembly mode

27 | 28 | 29 |
44 | 45 | 50 | 51 |

MIME type defined: text/x-z80.

52 |
53 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/theme/cobalt.css: -------------------------------------------------------------------------------- 1 | .cm-s-cobalt.CodeMirror { background: #002240; color: white; } 2 | .cm-s-cobalt div.CodeMirror-selected { background: #b36539 !important; } 3 | .cm-s-cobalt.CodeMirror ::selection { background: rgba(179, 101, 57, .99); } 4 | .cm-s-cobalt.CodeMirror ::-moz-selection { background: rgba(179, 101, 57, .99); } 5 | .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } 6 | .cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } 7 | .cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 8 | .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } 9 | .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white !important; } 10 | 11 | .cm-s-cobalt span.cm-comment { color: #08f; } 12 | .cm-s-cobalt span.cm-atom { color: #845dc4; } 13 | .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } 14 | .cm-s-cobalt span.cm-keyword { color: #ffee80; } 15 | .cm-s-cobalt span.cm-string { color: #3ad900; } 16 | .cm-s-cobalt span.cm-meta { color: #ff9d00; } 17 | .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } 18 | .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def { color: white; } 19 | .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } 20 | .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } 21 | .cm-s-cobalt span.cm-link { color: #845dc4; } 22 | .cm-s-cobalt span.cm-error { color: #9d1e15; } 23 | 24 | .cm-s-cobalt .CodeMirror-activeline-background {background: #002D57 !important;} 25 | .cm-s-cobalt .CodeMirror-matchingbracket {outline:1px solid grey;color:white !important} 26 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/theme/colorforth.css: -------------------------------------------------------------------------------- 1 | .cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; } 2 | .cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } 3 | .cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; } 4 | .cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; } 5 | .cm-s-colorforth .CodeMirror-linenumber { color: #bababa; } 6 | .cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white !important; } 7 | 8 | .cm-s-colorforth span.cm-comment { color: #ededed; } 9 | .cm-s-colorforth span.cm-def { color: #ff1c1c; font-weight:bold; } 10 | .cm-s-colorforth span.cm-keyword { color: #ffd900; } 11 | .cm-s-colorforth span.cm-builtin { color: #00d95a; } 12 | .cm-s-colorforth span.cm-variable { color: #73ff00; } 13 | .cm-s-colorforth span.cm-string { color: #007bff; } 14 | .cm-s-colorforth span.cm-number { color: #00c4ff; } 15 | .cm-s-colorforth span.cm-atom { color: #606060; } 16 | 17 | .cm-s-colorforth span.cm-variable-2 { color: #EEE; } 18 | .cm-s-colorforth span.cm-variable-3 { color: #DDD; } 19 | .cm-s-colorforth span.cm-property {} 20 | .cm-s-colorforth span.cm-operator {} 21 | 22 | .cm-s-colorforth span.cm-meta { color: yellow; } 23 | .cm-s-colorforth span.cm-qualifier { color: #FFF700; } 24 | .cm-s-colorforth span.cm-bracket { color: #cc7; } 25 | .cm-s-colorforth span.cm-tag { color: #FFBD40; } 26 | .cm-s-colorforth span.cm-attribute { color: #FFF700; } 27 | .cm-s-colorforth span.cm-error { color: #f00; } 28 | 29 | .cm-s-colorforth .CodeMirror-selected { background: #333d53 !important; } 30 | 31 | .cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); } 32 | 33 | .cm-s-colorforth .CodeMirror-activeline-background {background: #253540 !important;} 34 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/theme/eclipse.css: -------------------------------------------------------------------------------- 1 | .cm-s-eclipse span.cm-meta {color: #FF1717;} 2 | .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } 3 | .cm-s-eclipse span.cm-atom {color: #219;} 4 | .cm-s-eclipse span.cm-number {color: #164;} 5 | .cm-s-eclipse span.cm-def {color: #00f;} 6 | .cm-s-eclipse span.cm-variable {color: black;} 7 | .cm-s-eclipse span.cm-variable-2 {color: #0000C0;} 8 | .cm-s-eclipse span.cm-variable-3 {color: #0000C0;} 9 | .cm-s-eclipse span.cm-property {color: black;} 10 | .cm-s-eclipse span.cm-operator {color: black;} 11 | .cm-s-eclipse span.cm-comment {color: #3F7F5F;} 12 | .cm-s-eclipse span.cm-string {color: #2A00FF;} 13 | .cm-s-eclipse span.cm-string-2 {color: #f50;} 14 | .cm-s-eclipse span.cm-qualifier {color: #555;} 15 | .cm-s-eclipse span.cm-builtin {color: #30a;} 16 | .cm-s-eclipse span.cm-bracket {color: #cc7;} 17 | .cm-s-eclipse span.cm-tag {color: #170;} 18 | .cm-s-eclipse span.cm-attribute {color: #00c;} 19 | .cm-s-eclipse span.cm-link {color: #219;} 20 | .cm-s-eclipse span.cm-error {color: #f00;} 21 | 22 | .cm-s-eclipse .CodeMirror-activeline-background {background: #e8f2ff !important;} 23 | .cm-s-eclipse .CodeMirror-matchingbracket {outline:1px solid grey; color:black !important;} 24 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/theme/monokai.css: -------------------------------------------------------------------------------- 1 | /* Based on Sublime Text's Monokai theme */ 2 | 3 | .cm-s-monokai.CodeMirror {background: #272822; color: #f8f8f2;} 4 | .cm-s-monokai div.CodeMirror-selected {background: #49483E !important;} 5 | .cm-s-monokai.CodeMirror ::selection { background: rgba(73, 72, 62, .99); } 6 | .cm-s-monokai.CodeMirror ::-moz-selection { background: rgba(73, 72, 62, .99); } 7 | .cm-s-monokai .CodeMirror-gutters {background: #272822; border-right: 0px;} 8 | .cm-s-monokai .CodeMirror-guttermarker { color: white; } 9 | .cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; } 10 | .cm-s-monokai .CodeMirror-linenumber {color: #d0d0d0;} 11 | .cm-s-monokai .CodeMirror-cursor {border-left: 1px solid #f8f8f0 !important;} 12 | 13 | .cm-s-monokai span.cm-comment {color: #75715e;} 14 | .cm-s-monokai span.cm-atom {color: #ae81ff;} 15 | .cm-s-monokai span.cm-number {color: #ae81ff;} 16 | 17 | .cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute {color: #a6e22e;} 18 | .cm-s-monokai span.cm-keyword {color: #f92672;} 19 | .cm-s-monokai span.cm-string {color: #e6db74;} 20 | 21 | .cm-s-monokai span.cm-variable {color: #a6e22e;} 22 | .cm-s-monokai span.cm-variable-2 {color: #9effff;} 23 | .cm-s-monokai span.cm-def {color: #fd971f;} 24 | .cm-s-monokai span.cm-bracket {color: #f8f8f2;} 25 | .cm-s-monokai span.cm-tag {color: #f92672;} 26 | .cm-s-monokai span.cm-link {color: #ae81ff;} 27 | .cm-s-monokai span.cm-error {background: #f92672; color: #f8f8f0;} 28 | 29 | .cm-s-monokai .CodeMirror-activeline-background {background: #373831 !important;} 30 | .cm-s-monokai .CodeMirror-matchingbracket { 31 | text-decoration: underline; 32 | color: white !important; 33 | } 34 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/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 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/theme/night.css: -------------------------------------------------------------------------------- 1 | /* Loosely based on the Midnight Textmate theme */ 2 | 3 | .cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } 4 | .cm-s-night div.CodeMirror-selected { background: #447 !important; } 5 | .cm-s-night.CodeMirror ::selection { background: rgba(68, 68, 119, .99); } 6 | .cm-s-night.CodeMirror ::-moz-selection { background: rgba(68, 68, 119, .99); } 7 | .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } 8 | .cm-s-night .CodeMirror-guttermarker { color: white; } 9 | .cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; } 10 | .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } 11 | .cm-s-night .CodeMirror-cursor { border-left: 1px solid white !important; } 12 | 13 | .cm-s-night span.cm-comment { color: #6900a1; } 14 | .cm-s-night span.cm-atom { color: #845dc4; } 15 | .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } 16 | .cm-s-night span.cm-keyword { color: #599eff; } 17 | .cm-s-night span.cm-string { color: #37f14a; } 18 | .cm-s-night span.cm-meta { color: #7678e2; } 19 | .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } 20 | .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def { color: white; } 21 | .cm-s-night span.cm-bracket { color: #8da6ce; } 22 | .cm-s-night span.cm-comment { color: #6900a1; } 23 | .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } 24 | .cm-s-night span.cm-link { color: #845dc4; } 25 | .cm-s-night span.cm-error { color: #9d1e15; } 26 | 27 | .cm-s-night .CodeMirror-activeline-background {background: #1C005A !important;} 28 | .cm-s-night .CodeMirror-matchingbracket {outline:1px solid grey; color:white !important;} 29 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/theme/rubyblue.css: -------------------------------------------------------------------------------- 1 | .cm-s-rubyblue.CodeMirror { background: #112435; color: white; } 2 | .cm-s-rubyblue div.CodeMirror-selected { background: #38566F !important; } 3 | .cm-s-rubyblue.CodeMirror ::selection { background: rgba(56, 86, 111, 0.99); } 4 | .cm-s-rubyblue.CodeMirror ::-moz-selection { background: rgba(56, 86, 111, 0.99); } 5 | .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } 6 | .cm-s-rubyblue .CodeMirror-guttermarker { color: white; } 7 | .cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; } 8 | .cm-s-rubyblue .CodeMirror-linenumber { color: white; } 9 | .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white !important; } 10 | 11 | .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } 12 | .cm-s-rubyblue span.cm-atom { color: #F4C20B; } 13 | .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } 14 | .cm-s-rubyblue span.cm-keyword { color: #F0F; } 15 | .cm-s-rubyblue span.cm-string { color: #F08047; } 16 | .cm-s-rubyblue span.cm-meta { color: #F0F; } 17 | .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } 18 | .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def { color: white; } 19 | .cm-s-rubyblue span.cm-bracket { color: #F0F; } 20 | .cm-s-rubyblue span.cm-link { color: #F4C20B; } 21 | .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } 22 | .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } 23 | .cm-s-rubyblue span.cm-error { color: #AF2018; } 24 | 25 | .cm-s-rubyblue .CodeMirror-activeline-background {background: #173047 !important;} 26 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/codemirror/theme/the-matrix.css: -------------------------------------------------------------------------------- 1 | .cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; } 2 | .cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D !important; } 3 | .cm-s-the-matrix.CodeMirror ::selection { background: rgba(45, 45, 45, 0.99); } 4 | .cm-s-the-matrix.CodeMirror ::-moz-selection { background: rgba(45, 45, 45, 0.99); } 5 | .cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; } 6 | .cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; } 7 | .cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; } 8 | .cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; } 9 | .cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00 !important; } 10 | 11 | .cm-s-the-matrix span.cm-keyword {color: #008803; font-weight: bold;} 12 | .cm-s-the-matrix span.cm-atom {color: #3FF;} 13 | .cm-s-the-matrix span.cm-number {color: #FFB94F;} 14 | .cm-s-the-matrix span.cm-def {color: #99C;} 15 | .cm-s-the-matrix span.cm-variable {color: #F6C;} 16 | .cm-s-the-matrix span.cm-variable-2 {color: #C6F;} 17 | .cm-s-the-matrix span.cm-variable-3 {color: #96F;} 18 | .cm-s-the-matrix span.cm-property {color: #62FFA0;} 19 | .cm-s-the-matrix span.cm-operator {color: #999} 20 | .cm-s-the-matrix span.cm-comment {color: #CCCCCC;} 21 | .cm-s-the-matrix span.cm-string {color: #39C;} 22 | .cm-s-the-matrix span.cm-meta {color: #C9F;} 23 | .cm-s-the-matrix span.cm-qualifier {color: #FFF700;} 24 | .cm-s-the-matrix span.cm-builtin {color: #30a;} 25 | .cm-s-the-matrix span.cm-bracket {color: #cc7;} 26 | .cm-s-the-matrix span.cm-tag {color: #FFBD40;} 27 | .cm-s-the-matrix span.cm-attribute {color: #FFF700;} 28 | .cm-s-the-matrix span.cm-error {color: #FF0000;} 29 | 30 | .cm-s-the-matrix .CodeMirror-activeline-background {background: #040;} 31 | -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/lib/jquery.flowchart.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery.flowchart.js v1.1.0 | jquery.flowchart.min.js | jQuery plugin for flowchart.js. | MIT License | By: Pandao | https://github.com/pandao/jquery.flowchart.js | 2015-03-09 */ 2 | (function(factory){if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=factory}else{if(typeof define==="function"){factory(jQuery,flowchart)}else{factory($,flowchart)}}}(function(jQuery,flowchart){(function($){$.fn.flowChart=function(options){options=options||{};var defaults={"x":0,"y":0,"line-width":2,"line-length":50,"text-margin":10,"font-size":14,"font-color":"black","line-color":"black","element-color":"black","fill":"white","yes-text":"yes","no-text":"no","arrow-end":"block","symbols":{"start":{"font-color":"black","element-color":"black","fill":"white"},"end":{"class":"end-element"}},"flowstate":{"past":{"fill":"#CCCCCC","font-size":12},"current":{"fill":"black","font-color":"white","font-weight":"bold"},"future":{"fill":"white"},"request":{"fill":"blue"},"invalid":{"fill":"#444444"},"approved":{"fill":"#58C4A3","font-size":12,"yes-text":"APPROVED","no-text":"n/a"},"rejected":{"fill":"#C45879","font-size":12,"yes-text":"n/a","no-text":"REJECTED"}}};return this.each(function(){var $this=$(this);var diagram=flowchart.parse($this.text());var settings=$.extend(true,defaults,options);$this.html("");diagram.drawSVG(this,settings)})}})(jQuery)})); -------------------------------------------------------------------------------- /src/main/resources/static/style/css/editormd/plugins/test-plugin/test-plugin.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Test plugin for Editor.md 3 | * 4 | * @file test-plugin.js 5 | * @author pandao 6 | * @version 1.2.0 7 | * @updateTime 2015-03-07 8 | * {@link https://github.com/pandao/editor.md} 9 | * @license MIT 10 | */ 11 | 12 | (function() { 13 | 14 | var factory = function (exports) { 15 | 16 | var $ = jQuery; // if using module loader(Require.js/Sea.js). 17 | 18 | exports.testPlugin = function(){ 19 | alert("testPlugin"); 20 | }; 21 | 22 | exports.fn.testPluginMethodA = function() { 23 | /* 24 | var _this = this; // this == the current instance object of Editor.md 25 | var lang = _this.lang; 26 | var settings = _this.settings; 27 | var editor = this.editor; 28 | var cursor = cm.getCursor(); 29 | var selection = cm.getSelection(); 30 | var classPrefix = this.classPrefix; 31 | 32 | cm.focus(); 33 | */ 34 | //.... 35 | 36 | alert("testPluginMethodA"); 37 | }; 38 | 39 | }; 40 | 41 | // CommonJS/Node.js 42 | if (typeof require === "function" && typeof exports === "object" && typeof module === "object") 43 | { 44 | module.exports = factory; 45 | } 46 | else if (typeof define === "function") // AMD/CMD/Sea.js 47 | { 48 | if (define.amd) { // for Require.js 49 | 50 | define(["editormd"], function(editormd) { 51 | factory(editormd); 52 | }); 53 | 54 | } else { // for Sea.js 55 | define(function(require) { 56 | var editormd = require("./../../editormd"); 57 | factory(editormd); 58 | }); 59 | } 60 | } 61 | else 62 | { 63 | factory(window.editormd); 64 | } 65 | 66 | })(); 67 | -------------------------------------------------------------------------------- /src/main/resources/static/style/errorpage.css: -------------------------------------------------------------------------------- 1 | .error404Page{ 2 | text-align: center; 3 | } 4 | .error404Page img{ 5 | width: 80%; 6 | margin: 30px auto; 7 | } 8 | .errorWords{ 9 | text-align: center; 10 | } 11 | .errorWords_display{ 12 | font-size: 18px; 13 | font-family: 华文仿宋; 14 | } 15 | .error403Page{ 16 | text-align: center; 17 | } 18 | .error403Page img{ 19 | width: 50%; 20 | } -------------------------------------------------------------------------------- /src/main/resources/static/style/friendlink.css: -------------------------------------------------------------------------------- 1 | .qz-friendlink{ 2 | color: #0a628f; 3 | font-size: 25px; 4 | } 5 | .qz-friend{ 6 | margin-top: 5%; 7 | } 8 | .qz-friend li{ 9 | list-style-type: none; 10 | display: inline; 11 | height: 30px; 12 | overflow: hidden; 13 | } 14 | 15 | .qz-friend li a{ 16 | color: #4e4e4e; 17 | font-size: 15px; 18 | 19 | } 20 | .qz-friend li a:hover{ 21 | color: #b78e7d; 22 | } -------------------------------------------------------------------------------- /src/main/resources/static/style/guest.css: -------------------------------------------------------------------------------- 1 | .qz-guest{ 2 | width: 90%; 3 | margin: 0px auto; 4 | padding: 9%; 5 | font-size: 19px; 6 | } 7 | .qz-guest > ul > li{ 8 | margin-top: 15px; 9 | color: #64308f; 10 | text-shadow: #075558; 11 | font-weight: lighter; 12 | } -------------------------------------------------------------------------------- /src/main/resources/static/style/images/csdn.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/images/csdn.jpg -------------------------------------------------------------------------------- /src/main/resources/static/style/images/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/images/default.jpg -------------------------------------------------------------------------------- /src/main/resources/static/style/images/myPicture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/images/myPicture.jpg -------------------------------------------------------------------------------- /src/main/resources/static/style/images/qq.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/images/qq.jpg -------------------------------------------------------------------------------- /src/main/resources/static/style/images/wutouxiang.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/images/wutouxiang.png -------------------------------------------------------------------------------- /src/main/resources/static/style/images/wx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/memo012/ac-blog/6e9bcb6be5880f4d5d023b3ac72e3c8a6fac373d/src/main/resources/static/style/images/wx.png -------------------------------------------------------------------------------- /src/main/resources/static/style/js/aboutme.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | scrollTo(0, 0);//回到顶部 3 | }) -------------------------------------------------------------------------------- /src/main/resources/static/style/js/lastUrl.js: -------------------------------------------------------------------------------- 1 | 2 | $.ajax({ 3 | type: 'HEAD', // 获取头信息,type=HEAD即可 4 | url : window.location.href, 5 | async:false, 6 | success:function (data, status, xhr) { 7 | var lastUrl = xhr.getResponseHeader("lastUrl"); 8 | if(lastUrl != null && !lastUrl.match("register")){ 9 | location.href = lastUrl; 10 | } 11 | } 12 | }); -------------------------------------------------------------------------------- /src/main/resources/static/style/js/login.js: -------------------------------------------------------------------------------- 1 | var qzLogin = $(".qz-login"); 2 | var noticeBox = $(".notice-box"); 3 | qzLogin.click(function () { 4 | log(); 5 | }); 6 | 7 | 8 | function log(){ 9 | var phone = $("#username").val().trim(); 10 | var pass = $("#password").val(); 11 | var myreg = /^(((13[0-9]{1})|(14[0-9]{1})|(17[0]{1})|(15[0-3]{1})|(15[5-9]{1})|(18[0-9]{1}))+\d{8})$/; 12 | if(phone.length == 0 || phone.length != 11 || !myreg.test(phone) || pass.length < 6 || pass.length > 18){ 13 | $(".notice-box-res").show(); 14 | } else if(pass.length < 6 || pass.length > 18){ 15 | $(".notice-box-password-num").show(); 16 | }else{ 17 | var str = {phone: phone, password: pass}; 18 | $.ajax({ 19 | type: "GET", 20 | url: "loginUser", 21 | // contentType: "application/x-www-form-urlencoded", 22 | contentType: "application/json", 23 | dataType: "json", 24 | data: str, 25 | success: function (data) { 26 | //放入数据 27 | if(data.status == 200){ 28 | window.location.href="/lasturl"; 29 | }else if(data.status == 500){ 30 | $(".notice-box-res").show(); 31 | setTimeout(function () { 32 | noticeBox.hide(); 33 | }, 3000); 34 | } 35 | }, 36 | error: function () { 37 | } 38 | }); 39 | } 40 | 41 | 42 | // 定时关闭错误提示框 43 | var closeNoticeBox = setTimeout(function () { 44 | noticeBox.hide(); 45 | }, 3000); 46 | } 47 | 48 | /** 49 | * enter 登录 50 | */ 51 | $(".pass").keyup(function (event) { 52 | if (event.which == "13") { 53 | log(); 54 | } 55 | }); -------------------------------------------------------------------------------- /src/main/resources/static/style/js/pagehelper.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/main/resources/static/style/js/tags.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 标签加载 3 | */ 4 | function putInLabel(data){ 5 | var length = data.length; 6 | $(".qz-div-div").empty(); 7 | var tagVaues = $(".qz-div-div"); 8 | var center = $( 9 | '
' + 10 | '

标签云

' + 11 | '
' + 12 | '
' + 13 | 14 | '
' + 15 | '
'); 16 | tagVaues.append(center); 17 | $.each(data, function (index, obj) { 18 | var cent = $('' + obj['labelName'] + '  '); 19 | $(".blog-clear-padding").append(cent); 20 | }) 21 | } 22 | $.ajax({ 23 | type: "GET", 24 | url: "/tag/getTags", 25 | contentType: "application/json", 26 | dataType: "json", 27 | success: function (data) { 28 | //放入数据 29 | if(data.status == 200){ 30 | putInLabel(data.data); 31 | } 32 | }, 33 | error: function () { 34 | alert("出错啦..."); 35 | } 36 | }) -------------------------------------------------------------------------------- /src/main/resources/static/style/js/update.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | scrollTo(0, 0);//回到顶部 3 | }) -------------------------------------------------------------------------------- /src/main/resources/static/style/tig.css: -------------------------------------------------------------------------------- 1 | .notice-box{ 2 | display: none; 3 | position: fixed; 4 | bottom: 56px; 5 | left: 50%; 6 | transform: translateX(-55%); 7 | padding: 16px 40px; 8 | border-radius: 4px; 9 | background: rgba(63,63,63,0.9); 10 | box-shadow: 2px 2px 4px 0 rgba(0,0,0,0.33); 11 | line-height: 24px; 12 | font-size: 16px; 13 | color: #fff; 14 | z-index: 9999; 15 | } 16 | .notice-box-suc{ 17 | display: none; 18 | position: fixed; 19 | bottom: 56px; 20 | left: 50%; 21 | transform: translateX(-55%); 22 | padding: 16px 40px; 23 | border-radius: 4px; 24 | background: rgba(91, 188, 68, 0.9); 25 | box-shadow: 2px 2px 4px 0 rgba(0,0,0,0.33); 26 | line-height: 24px; 27 | font-size: 16px; 28 | color: #fff; 29 | z-index: 9999; 30 | } -------------------------------------------------------------------------------- /src/main/resources/static/style/update.css: -------------------------------------------------------------------------------- 1 | .qz-center-div{ 2 | width: 95%; 3 | margin: 0 auto; 4 | padding: 3% 0 0 0; 5 | } 6 | .qz-update{ 7 | font-size: 23px; 8 | color: rgba(7, 38, 41, 0.5); 9 | 10 | } 11 | .qz-session-content .qz-center{ 12 | border-radius: 0%; 13 | } 14 | .qz-log{ 15 | margin-top: 8%; 16 | font-size: 25px; 17 | color: rgba(96, 11, 112, 0.5); 18 | } 19 | .qz-updatelog{ 20 | /*margin-top: 8%;*/ 21 | } 22 | .qz-updatelog h3{ 23 | color: rgba(0, 0, 0, 0.56); 24 | } 25 | .qz-ul-li{ 26 | margin-top: 15%; 27 | } 28 | .qz-ul-li p{ 29 | font-size: 17px; 30 | color: rgba(75, 11, 12, 0.5); 31 | } 32 | .qz-ul-li-first{ 33 | margin-top: 8%; 34 | } -------------------------------------------------------------------------------- /src/main/resources/static/style/user.css: -------------------------------------------------------------------------------- 1 | .admin-main { 2 | padding: 0; 3 | } 4 | 5 | .qz-show{ 6 | display: block; 7 | } 8 | /** 9 | 留言 10 | */ 11 | .data-list{ 12 | margin-top: 20px; 13 | } 14 | .data-list li{ 15 | list-style: none; 16 | padding: 5px 0; 17 | border-bottom: 1px solid #e0e0e0; 18 | position: relative; 19 | } 20 | .msg-type{ 21 | display: inline-block; 22 | height: 20px; 23 | line-height: 18px; 24 | padding: 0 5px; 25 | color: #4d4d4d; 26 | font-size: 12px; 27 | text-align: center; 28 | background-color: #fff; 29 | border: 1px solid #e0e0e0; 30 | vertical-align: top; 31 | } 32 | .msg-title{ 33 | width: 80%; 34 | display: inline-block; 35 | white-space: nowrap; 36 | overflow: hidden; 37 | text-overflow: ellipsis; 38 | vertical-align: middle; 39 | color: #4d4d4d; 40 | line-height: 18px; 41 | margin-top: -15px; 42 | } 43 | .msg-text{ 44 | margin-top: -3px; 45 | } 46 | .bb-span-wrap a{ 47 | color: #0e0e0e; 48 | } 49 | .bb-span-wrap a:hover{ 50 | color: #c00d11; 51 | } 52 | .fr{ 53 | float: right; 54 | font-size: 13px; 55 | } 56 | .data-me{ 57 | cursor: pointer; 58 | } 59 | .line{ 60 | width: 1px; 61 | height: 15px; 62 | margin: 4px 10px 0 10px; 63 | background: #c7afc7; 64 | } 65 | .data-cricle{ 66 | position: absolute; 67 | left: -1%; 68 | top: 17%; 69 | content: ""; 70 | width: 6px; 71 | height: 6px; 72 | background: #ca0c16; 73 | border-radius: 50%; 74 | } 75 | .comment-com{ 76 | width: 90%; 77 | margin: 0 auto; 78 | text-align: center; 79 | font-size: 20px; 80 | color: #a27d82; 81 | } 82 | 83 | 84 | -------------------------------------------------------------------------------- /src/main/resources/templates/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 29 |
30 | 31 | -------------------------------------------------------------------------------- /src/main/resources/templates/lasturl.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Title 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/templates/left.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |
8 |
9 | 10 |
11 |

优秀的人都在努力

12 |

一个井底之蛙

13 |

有不努力的资本吗?

14 |

--- lq

15 |

Welcome come my blog

16 |
17 | 18 |
19 |
20 | 21 |
22 |

承受不了就释放

23 |

接受不来的就拒绝

24 |

不喜欢的人就远离

25 |

热爱的事拼命追逐

26 |

日子即便渺小

27 |

也都祝你幸福快乐

28 |
29 | 30 |
31 |
32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /src/main/resources/templates/lunbo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 | 7 |
8 |
    9 |
  • 新增友链功能~~~
  • 10 |
  • 网站技术更新,详情见GitHub~~~
  • 11 |
  • 只有忍受别人不能忍受的忍受~~~
  • 12 |
  • 才能享受别人不能享受的享受~~~
  • 13 |
14 |
15 |
16 |
17 | 18 | 19 | -------------------------------------------------------------------------------- /src/test/java/com/qiang/AcblogApplicationTests.java: -------------------------------------------------------------------------------- 1 | package com.qiang; 2 | 3 | import org.junit.Test; 4 | import org.junit.runner.RunWith; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.boot.test.context.SpringBootTest; 8 | import org.springframework.test.context.junit4.SpringRunner; 9 | 10 | @RunWith(SpringRunner.class) 11 | @SpringBootTest 12 | public class AcblogApplicationTests { 13 | 14 | private Logger logger = LoggerFactory.getLogger(this.getClass()); 15 | 16 | 17 | @Test 18 | public void contextLoads() { 19 | } 20 | 21 | } 22 | --------------------------------------------------------------------------------