├── .gitattributes ├── pom.xml └── src └── main ├── java └── com │ └── zx │ └── blog │ ├── MyBlogApplication.java │ ├── annotation │ └── SystemLog.java │ ├── aspect │ └── SysLogAop.java │ ├── config │ ├── BrowerSecurityConfig.java │ ├── RedisCacheAutoConfiguration.java │ └── RsaKeyProperties.java │ ├── constants │ └── SecurityConstants.java │ ├── controller │ ├── admin │ │ ├── AdminIndexController.java │ │ ├── AdminLinkController.java │ │ ├── BlogController.java │ │ ├── ImageUploadController.java │ │ ├── SysLogController.java │ │ ├── TagController.java │ │ ├── TypeController.java │ │ ├── UserController.java │ │ └── ValidateCodeController.java │ └── blog │ │ ├── BlogIndexController.java │ │ ├── BlogLinkController.java │ │ ├── BlogTagController.java │ │ ├── BlogTypeController.java │ │ └── TimeAndAboutController.java │ ├── dao │ ├── BlogMapper.java │ ├── LinkMapper.java │ ├── SysLogMapper.java │ ├── TagMapper.java │ ├── TypeMapper.java │ └── UserMapper.java │ ├── dto │ ├── BlogViewsDto.java │ ├── LoginRequest.java │ ├── ResultBody.java │ └── SevenDaysDto.java │ ├── entity │ ├── Blog.java │ ├── Comment.java │ ├── Link.java │ ├── SysLog.java │ ├── Tag.java │ ├── Type.java │ └── User.java │ ├── exception │ ├── BlogException.java │ └── ValidateCodeException.java │ ├── filter │ ├── JwtAuthenticationFilter.java │ └── JwtVerifyFilter.java │ ├── handler │ ├── BloomFilterHelper.java │ ├── GlobalExceptionHandler.java │ ├── MyAuthenticationFailureHandler.java │ └── ScheduledTasksHandler.java │ ├── service │ ├── BaseErrorService.java │ ├── BlogService.java │ ├── LinkService.java │ ├── SysLogService.java │ ├── TagService.java │ ├── TypeService.java │ ├── UserService.java │ └── impl │ │ ├── BaseErrorServiceImpl.java │ │ ├── BlogServiceImpl.java │ │ ├── LinkServiceImpl.java │ │ ├── SysLogServiceImpl.java │ │ ├── TagServiceImpl.java │ │ ├── TypeServiceImpl.java │ │ └── UserServiceImpl.java │ └── util │ ├── CookieUtils.java │ ├── FileCopyUtil.java │ ├── IpInfoUtil.java │ ├── JwtUtils.java │ ├── MarkDownUtil.java │ ├── MyBeanUtils.java │ ├── ObjectUtil.java │ ├── RedisComponentUtils.java │ ├── RsaUtils.java │ └── ThreadPoolUtil.java └── resources ├── application-dev.yml ├── application.yml ├── blog.sql ├── logback-spring.xml ├── mapper ├── BlogMapper.xml ├── LinkMapper.xml ├── SysLogMapper.xml ├── TagMapper.xml ├── TypeMapper.xml └── UserMapper.xml ├── static ├── admin │ ├── css │ │ ├── bootstrap.min.css │ │ ├── materialdesignicons.min.css │ │ └── style.min.css │ ├── fonts │ │ ├── materialdesignicons.eot │ │ ├── materialdesignicons.svg │ │ ├── materialdesignicons.ttf │ │ ├── materialdesignicons.woff │ │ └── materialdesignicons.woff2 │ ├── images │ │ ├── captcha.png │ │ ├── favicon.ico │ │ ├── gallery │ │ │ ├── 1.jpg │ │ │ ├── 10.jpg │ │ │ ├── 11.jpg │ │ │ ├── 13.jpg │ │ │ ├── 14.jpg │ │ │ ├── 15.jpg │ │ │ ├── 16.jpg │ │ │ ├── 17.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ ├── 4.jpg │ │ │ ├── 5.jpg │ │ │ ├── 6.jpg │ │ │ ├── 7.jpg │ │ │ ├── 8.jpg │ │ │ └── 9.jpg │ │ ├── img-slide-1.jpg │ │ ├── img-slide-2.jpg │ │ ├── img-slide-3.jpg │ │ ├── img-slide-4.jpg │ │ ├── img-slide-5.jpg │ │ ├── login-bg.png │ │ ├── logo-ico.png │ │ ├── logo-sidebar.png │ │ └── logo.png │ └── js │ │ ├── Chart.js │ │ ├── bootstrap-colorpicker │ │ ├── bootstrap-colorpicker.js │ │ ├── bootstrap-colorpicker.min.js │ │ ├── css │ │ │ ├── bootstrap-colorpicker.css │ │ │ ├── bootstrap-colorpicker.css.map │ │ │ ├── bootstrap-colorpicker.min.css │ │ │ └── bootstrap-colorpicker.min.css.map │ │ └── img │ │ │ └── bootstrap-colorpicker │ │ │ ├── alpha-horizontal.png │ │ │ ├── alpha.png │ │ │ ├── hue-horizontal.png │ │ │ ├── hue.png │ │ │ └── saturation.png │ │ ├── bootstrap-datepicker │ │ ├── bootstrap-datepicker.js │ │ ├── bootstrap-datepicker.min.js │ │ ├── bootstrap-datepicker3.css │ │ ├── bootstrap-datepicker3.css.map │ │ ├── bootstrap-datepicker3.min.css │ │ ├── bootstrap-datepicker3.min.css.map │ │ └── locales │ │ │ ├── bootstrap-datepicker.ar.min.js │ │ │ ├── bootstrap-datepicker.az.min.js │ │ │ ├── bootstrap-datepicker.bg.min.js │ │ │ ├── bootstrap-datepicker.bs.min.js │ │ │ ├── bootstrap-datepicker.ca.min.js │ │ │ ├── bootstrap-datepicker.cs.min.js │ │ │ ├── bootstrap-datepicker.cy.min.js │ │ │ ├── bootstrap-datepicker.da.min.js │ │ │ ├── bootstrap-datepicker.de.min.js │ │ │ ├── bootstrap-datepicker.el.min.js │ │ │ ├── bootstrap-datepicker.en-AU.min.js │ │ │ ├── bootstrap-datepicker.en-GB.min.js │ │ │ ├── bootstrap-datepicker.eo.min.js │ │ │ ├── bootstrap-datepicker.es.min.js │ │ │ ├── bootstrap-datepicker.et.min.js │ │ │ ├── bootstrap-datepicker.eu.min.js │ │ │ ├── bootstrap-datepicker.fa.min.js │ │ │ ├── bootstrap-datepicker.fi.min.js │ │ │ ├── bootstrap-datepicker.fo.min.js │ │ │ ├── bootstrap-datepicker.fr-CH.min.js │ │ │ ├── bootstrap-datepicker.fr.min.js │ │ │ ├── bootstrap-datepicker.gl.min.js │ │ │ ├── bootstrap-datepicker.he.min.js │ │ │ ├── bootstrap-datepicker.hr.min.js │ │ │ ├── bootstrap-datepicker.hu.min.js │ │ │ ├── bootstrap-datepicker.hy.min.js │ │ │ ├── bootstrap-datepicker.id.min.js │ │ │ ├── bootstrap-datepicker.is.min.js │ │ │ ├── bootstrap-datepicker.it-CH.min.js │ │ │ ├── bootstrap-datepicker.it.min.js │ │ │ ├── bootstrap-datepicker.ja.min.js │ │ │ ├── bootstrap-datepicker.ka.min.js │ │ │ ├── bootstrap-datepicker.kh.min.js │ │ │ ├── bootstrap-datepicker.kk.min.js │ │ │ ├── bootstrap-datepicker.ko.min.js │ │ │ ├── bootstrap-datepicker.kr.min.js │ │ │ ├── bootstrap-datepicker.lt.min.js │ │ │ ├── bootstrap-datepicker.lv.min.js │ │ │ ├── bootstrap-datepicker.me.min.js │ │ │ ├── bootstrap-datepicker.mk.min.js │ │ │ ├── bootstrap-datepicker.mn.min.js │ │ │ ├── bootstrap-datepicker.ms.min.js │ │ │ ├── bootstrap-datepicker.nb.min.js │ │ │ ├── bootstrap-datepicker.nl-BE.min.js │ │ │ ├── bootstrap-datepicker.nl.min.js │ │ │ ├── bootstrap-datepicker.no.min.js │ │ │ ├── bootstrap-datepicker.pl.min.js │ │ │ ├── bootstrap-datepicker.pt-BR.min.js │ │ │ ├── bootstrap-datepicker.pt.min.js │ │ │ ├── bootstrap-datepicker.ro.min.js │ │ │ ├── bootstrap-datepicker.rs-latin.min.js │ │ │ ├── bootstrap-datepicker.rs.min.js │ │ │ ├── bootstrap-datepicker.ru.min.js │ │ │ ├── bootstrap-datepicker.sk.min.js │ │ │ ├── bootstrap-datepicker.sl.min.js │ │ │ ├── bootstrap-datepicker.sq.min.js │ │ │ ├── bootstrap-datepicker.sr-latin.min.js │ │ │ ├── bootstrap-datepicker.sr.min.js │ │ │ ├── bootstrap-datepicker.sv.min.js │ │ │ ├── bootstrap-datepicker.sw.min.js │ │ │ ├── bootstrap-datepicker.th.min.js │ │ │ ├── bootstrap-datepicker.tr.min.js │ │ │ ├── bootstrap-datepicker.uk.min.js │ │ │ ├── bootstrap-datepicker.vi.min.js │ │ │ ├── bootstrap-datepicker.zh-CN.min.js │ │ │ └── bootstrap-datepicker.zh-TW.min.js │ │ ├── bootstrap-datetimepicker │ │ ├── bootstrap-datetimepicker.css │ │ ├── bootstrap-datetimepicker.js │ │ ├── bootstrap-datetimepicker.min.css │ │ ├── bootstrap-datetimepicker.min.js │ │ ├── locale │ │ │ ├── af.js │ │ │ ├── ar-ma.js │ │ │ ├── ar-sa.js │ │ │ ├── ar-tn.js │ │ │ ├── ar.js │ │ │ ├── az.js │ │ │ ├── be.js │ │ │ ├── bg.js │ │ │ ├── bn.js │ │ │ ├── bo.js │ │ │ ├── br.js │ │ │ ├── bs.js │ │ │ ├── ca.js │ │ │ ├── cs.js │ │ │ ├── cv.js │ │ │ ├── cy.js │ │ │ ├── da.js │ │ │ ├── de-at.js │ │ │ ├── de.js │ │ │ ├── el.js │ │ │ ├── en-au.js │ │ │ ├── en-ca.js │ │ │ ├── en-gb.js │ │ │ ├── eo.js │ │ │ ├── es.js │ │ │ ├── et.js │ │ │ ├── eu.js │ │ │ ├── fa.js │ │ │ ├── fi.js │ │ │ ├── fo.js │ │ │ ├── fr-ca.js │ │ │ ├── fr.js │ │ │ ├── fy.js │ │ │ ├── gl.js │ │ │ ├── he.js │ │ │ ├── hi.js │ │ │ ├── hr.js │ │ │ ├── hu.js │ │ │ ├── hy-am.js │ │ │ ├── id.js │ │ │ ├── is.js │ │ │ ├── it.js │ │ │ ├── ja.js │ │ │ ├── jv.js │ │ │ ├── ka.js │ │ │ ├── km.js │ │ │ ├── ko.js │ │ │ ├── lb.js │ │ │ ├── lt.js │ │ │ ├── lv.js │ │ │ ├── me.js │ │ │ ├── mk.js │ │ │ ├── ml.js │ │ │ ├── mr.js │ │ │ ├── ms-my.js │ │ │ ├── ms.js │ │ │ ├── my.js │ │ │ ├── nb.js │ │ │ ├── ne.js │ │ │ ├── nl.js │ │ │ ├── nn.js │ │ │ ├── pl.js │ │ │ ├── pt-br.js │ │ │ ├── pt.js │ │ │ ├── ro.js │ │ │ ├── ru.js │ │ │ ├── si.js │ │ │ ├── sk.js │ │ │ ├── sl.js │ │ │ ├── sq.js │ │ │ ├── sr-cyrl.js │ │ │ ├── sr.js │ │ │ ├── sv.js │ │ │ ├── ta.js │ │ │ ├── th.js │ │ │ ├── tl-ph.js │ │ │ ├── tr.js │ │ │ ├── tzl.js │ │ │ ├── tzm-latn.js │ │ │ ├── tzm.js │ │ │ ├── uk.js │ │ │ ├── uz.js │ │ │ ├── vi.js │ │ │ ├── zh-cn.js │ │ │ └── zh-tw.js │ │ └── moment.min.js │ │ ├── bootstrap-multitabs │ │ ├── multitabs.js │ │ └── multitabs.min.css │ │ ├── bootstrap-notify.min.js │ │ ├── bootstrap-table │ │ ├── bootstrap-table-zh-CN.min.js │ │ ├── bootstrap-table.js │ │ ├── bootstrap-table.min.css │ │ ├── bootstrap-table.min.js │ │ └── extensions │ │ │ ├── accent-neutralise │ │ │ └── bootstrap-table-accent-neutralise.min.js │ │ │ ├── addrbar │ │ │ └── bootstrap-table-addrbar.min.js │ │ │ ├── auto-refresh │ │ │ └── bootstrap-table-auto-refresh.min.js │ │ │ ├── cookie │ │ │ └── bootstrap-table-cookie.min.js │ │ │ ├── copy-rows │ │ │ └── bootstrap-table-copy-rows.min.js │ │ │ ├── defer-url │ │ │ └── bootstrap-table-defer-url.min.js │ │ │ ├── editable │ │ │ └── bootstrap-table-editable.min.js │ │ │ ├── export │ │ │ └── bootstrap-table-export.min.js │ │ │ ├── filter-control │ │ │ ├── bootstrap-table-filter-control.min.css │ │ │ └── bootstrap-table-filter-control.min.js │ │ │ ├── fixed-columns │ │ │ ├── bootstrap-table-fixed-columns.min.css │ │ │ └── bootstrap-table-fixed-columns.min.js │ │ │ ├── group-by-v2 │ │ │ ├── bootstrap-table-group-by.min.css │ │ │ └── bootstrap-table-group-by.min.js │ │ │ ├── group-by │ │ │ ├── bootstrap-table-group-by.min.css │ │ │ └── bootstrap-table-group-by.min.js │ │ │ ├── i18n-enhance │ │ │ └── bootstrap-table-i18n-enhance.min.js │ │ │ ├── key-events │ │ │ └── bootstrap-table-key-events.min.js │ │ │ ├── mobile │ │ │ └── bootstrap-table-mobile.min.js │ │ │ ├── multi-column-toggle │ │ │ └── bootstrap-table-multi-toggle.min.js │ │ │ ├── multiple-search │ │ │ └── bootstrap-table-multiple-search.min.js │ │ │ ├── multiple-selection-row │ │ │ ├── bootstrap-table-multiple-selection-row.min.css │ │ │ └── bootstrap-table-multiple-selection-row.min.js │ │ │ ├── multiple-sort │ │ │ └── bootstrap-table-multiple-sort.min.js │ │ │ ├── natural-sorting │ │ │ └── bootstrap-table-natural-sorting.min.js │ │ │ ├── page-jump-to │ │ │ ├── bootstrap-table-page-jump-to.min.css │ │ │ └── bootstrap-table-page-jump-to.min.js │ │ │ ├── pipeline │ │ │ └── bootstrap-table-pipeline.min.js │ │ │ ├── print │ │ │ └── bootstrap-table-print.min.js │ │ │ ├── reorder-columns │ │ │ └── bootstrap-table-reorder-columns.min.js │ │ │ ├── reorder-rows │ │ │ ├── bootstrap-table-reorder-rows.min.css │ │ │ └── bootstrap-table-reorder-rows.min.js │ │ │ ├── resizable │ │ │ └── bootstrap-table-resizable.min.js │ │ │ ├── select2-filter │ │ │ └── bootstrap-table-select2-filter.min.js │ │ │ ├── sticky-header │ │ │ ├── bootstrap-table-sticky-header.min.css │ │ │ └── bootstrap-table-sticky-header.min.js │ │ │ ├── toolbar │ │ │ └── bootstrap-table-toolbar.min.js │ │ │ ├── tree-column │ │ │ ├── bootstrap-table-tree-column.min.css │ │ │ └── bootstrap-table-tree-column.min.js │ │ │ └── treegrid │ │ │ └── bootstrap-table-treegrid.min.js │ │ ├── bootstrap.min.js │ │ ├── chosen.jquery.min.js │ │ ├── index.min.js │ │ ├── ion-rangeslider │ │ ├── ion.rangeSlider.min.css │ │ └── ion.rangeSlider.min.js │ │ ├── jconfirm │ │ ├── jquery-confirm.min.css │ │ └── jquery-confirm.min.js │ │ ├── jquery-tags-input │ │ ├── jquery.tagsinput.min.css │ │ └── jquery.tagsinput.min.js │ │ ├── jquery-treegrid │ │ ├── jquery.treegrid.min.css │ │ └── jquery.treegrid.min.js │ │ ├── jquery.bootstrap.wizard.min.js │ │ ├── jquery.min.js │ │ ├── lightyear.js │ │ ├── main.min.js │ │ ├── perfect-scrollbar.min.js │ │ ├── x-editable │ │ └── 1.5.1 │ │ │ └── bootstrap3-editable │ │ │ ├── css │ │ │ └── bootstrap-editable.min.css │ │ │ ├── img │ │ │ ├── clear.png │ │ │ └── loading.gif │ │ │ └── js │ │ │ └── bootstrap-editable.min.js │ │ └── xm-select │ │ └── xm-select.js ├── blog │ ├── css │ │ ├── animate.css │ │ ├── base.css │ │ ├── base_info.css │ │ ├── github-markdown.css │ │ ├── m.css │ │ └── tocbot.css │ ├── images │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── 4.jpg │ │ ├── abbg.png │ │ ├── aliyun.png │ │ ├── avatar.jpg │ │ ├── avatar.png │ │ ├── b01.jpg │ │ ├── b02.jpg │ │ ├── b03.jpg │ │ ├── b04.jpg │ │ ├── b05.jpg │ │ ├── bg.png │ │ ├── c01.png │ │ ├── c02.png │ │ ├── c03.png │ │ ├── c04.png │ │ ├── close.png │ │ ├── favicon.ico │ │ ├── h1.jpg │ │ ├── h2.jpg │ │ ├── hline.png │ │ ├── huangguan.png │ │ ├── jinniuyun.jpg │ │ ├── joinwx.png │ │ ├── joinwxqun.png │ │ ├── jt.png │ │ ├── left.png │ │ ├── lm01.jpg │ │ ├── lm02.jpg │ │ ├── lm03.jpg │ │ ├── lm04.jpg │ │ ├── longad.jpg │ │ ├── mian.png │ │ ├── qq1.png │ │ ├── qq2.png │ │ ├── quote-bg.png │ │ ├── right.png │ │ ├── star.png │ │ ├── toc.png │ │ ├── top.png │ │ ├── v.png │ │ ├── wx.png │ │ ├── wxgzh.jpg │ │ ├── 未标题-2.jpg │ │ └── 栏目封面.psd │ └── js │ │ ├── comm.js │ │ ├── jquery-1.8.3.min.js │ │ ├── modernizr.js │ │ ├── page.js │ │ ├── page2.js │ │ ├── prism.js │ │ ├── tocbot.js │ │ └── tocbot.min.js ├── rsa │ ├── rsa_private_key.pem │ └── rsa_public_key.pem └── upload │ └── images │ ├── 20200406 │ ├── 1586163165546_911.png │ ├── 1586163209506_87.png │ └── 1586163299105_284.png │ └── 20200712 │ └── 1594540218375_15.jpg └── templates ├── admin ├── blog.html ├── blog_add.html ├── blog_update.html ├── header.html ├── index.html ├── link.html ├── link_add.html ├── link_update.html ├── log.html ├── login.html ├── main.html ├── tag.html ├── tag_add.html ├── tag_update.html ├── type.html ├── type_add.html ├── type_update.html └── user_info.html ├── blog ├── about.html ├── footer.html ├── header.html ├── index.html ├── info.html ├── link.html ├── list.html ├── search.html ├── sider.html ├── success.html ├── tag.html ├── time.html └── type.html └── error └── error.html /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=java 2 | *.css linguist-language=java 3 | *.html linguist-language=java -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/annotation/SystemLog.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | @Target({ElementType.PARAMETER, ElementType.METHOD})//作用于参数或方法上 6 | @Retention(RetentionPolicy.RUNTIME) 7 | @Documented 8 | public @interface SystemLog { 9 | /** 10 | * 日志名称 11 | * 12 | * @return 13 | */ 14 | String description() default ""; 15 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/config/RsaKeyProperties.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.config; 2 | 3 | import com.zx.blog.util.RsaUtils; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | 6 | import javax.annotation.PostConstruct; 7 | import java.security.PrivateKey; 8 | import java.security.PublicKey; 9 | 10 | @ConfigurationProperties("rsa.key") 11 | public class RsaKeyProperties { 12 | 13 | private String pubKeyFile; 14 | private String priKeyFile; 15 | 16 | private PublicKey publicKey; 17 | private PrivateKey privateKey; 18 | private int expire; 19 | private String cooikeName; 20 | 21 | @PostConstruct 22 | public void createRsaKey() throws Exception { 23 | publicKey = RsaUtils.getPublicKey(pubKeyFile); 24 | privateKey = RsaUtils.getPrivateKey(priKeyFile); 25 | } 26 | 27 | public String getPubKeyFile() { 28 | return pubKeyFile; 29 | } 30 | 31 | public void setPubKeyFile(String pubKeyFile) { 32 | this.pubKeyFile = pubKeyFile; 33 | } 34 | 35 | public String getPriKeyFile() { 36 | return priKeyFile; 37 | } 38 | 39 | public void setPriKeyFile(String priKeyFile) { 40 | this.priKeyFile = priKeyFile; 41 | } 42 | 43 | public PublicKey getPublicKey() { 44 | return publicKey; 45 | } 46 | 47 | public void setPublicKey(PublicKey publicKey) { 48 | this.publicKey = publicKey; 49 | } 50 | 51 | public PrivateKey getPrivateKey() { 52 | return privateKey; 53 | } 54 | 55 | public void setPrivateKey(PrivateKey privateKey) { 56 | this.privateKey = privateKey; 57 | } 58 | 59 | public int getExpire() { 60 | return expire; 61 | } 62 | 63 | public void setExpire(int expire) { 64 | this.expire = expire; 65 | } 66 | 67 | public String getCooikeName() { 68 | return cooikeName; 69 | } 70 | 71 | public void setCooikeName(String cooikeName) { 72 | this.cooikeName = cooikeName; 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/constants/SecurityConstants.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.constants; 2 | 3 | /** 4 | * @author shuang.kou 5 | * @description Spring Security相关配置常量 6 | */ 7 | public class SecurityConstants { 8 | 9 | /** 10 | * 登录的地址 11 | */ 12 | public static final String AUTH_LOGIN_URL = "/auth/login"; 13 | 14 | /** 15 | * 匿名用户 16 | */ 17 | public static final String ANONYMOUS_USER = "anonymousUser"; 18 | 19 | /** 20 | * 角色的key 21 | **/ 22 | public static final String ROLE_CLAIMS = "rol"; 23 | /** 24 | * rememberMe 为 false 的时候过期时间是1个小时 25 | */ 26 | public static final long EXPIRATION = 60 * 60L; 27 | /** 28 | * rememberMe 为 true 的时候过期时间是7天 29 | */ 30 | public static final long EXPIRATION_REMEMBER = 60 * 60 * 24 * 7L; 31 | 32 | /** 33 | * JWT签名密钥硬编码到应用程序代码中,应该存放在环境变量或.properties文件中。 34 | */ 35 | public static final String JWT_SECRET_KEY = "C*F-JaNdRgUkXn2r5u8x/A?D(G+KbPeShVmYq3s6v9y$B&E)H@McQfTjWnZr4u7w"; 36 | 37 | // JWT token defaults 38 | 39 | public static final String TOKEN_HEADER = "Authorization"; 40 | public static final String TOKEN_PREFIX = "Bearer "; 41 | public static final String TOKEN_TYPE = "JWT"; 42 | 43 | private SecurityConstants() { 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/controller/admin/AdminIndexController.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.controller.admin; 2 | 3 | import com.zx.blog.service.BlogService; 4 | import com.zx.blog.service.TagService; 5 | import com.zx.blog.service.TypeService; 6 | import com.zx.blog.service.UserService; 7 | import com.zx.blog.dto.SevenDaysDto; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Controller; 10 | import org.springframework.ui.Model; 11 | import org.springframework.web.bind.annotation.RequestMapping; 12 | import org.springframework.web.bind.annotation.RequestMethod; 13 | import org.springframework.web.bind.annotation.ResponseBody; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * @author zouxu 19 | * @date 2020/4/1 22:03 20 | */ 21 | @Controller 22 | @RequestMapping("/admin") 23 | public class AdminIndexController { 24 | 25 | private final BlogService blogService; 26 | 27 | private final UserService userService; 28 | 29 | private final TypeService typeService; 30 | 31 | private final TagService tagService; 32 | 33 | public AdminIndexController(BlogService blogService, UserService userService, TypeService typeService, TagService tagService) { 34 | this.blogService = blogService; 35 | this.userService = userService; 36 | this.typeService = typeService; 37 | this.tagService = tagService; 38 | } 39 | 40 | @RequestMapping(value = "/main", method = RequestMethod.GET) 41 | public String adminIndex(Model model){ 42 | model.addAttribute("blogCount",blogService.countBlog()); 43 | model.addAttribute("userCount",userService.countUser()); 44 | model.addAttribute("typeCount",typeService.countType()); 45 | model.addAttribute("tagCount",tagService.countTag()); 46 | return "admin/main"; 47 | } 48 | 49 | @ResponseBody 50 | @RequestMapping(value = "/findSevenDaysBlog", method = RequestMethod.GET) 51 | public List findSevenDaysBlog(){ 52 | return blogService.findSevenDaysBlog(); 53 | } 54 | 55 | @ResponseBody 56 | @RequestMapping(value = "/findSevenDaysUser", method = RequestMethod.GET) 57 | public List findSevenDaysUser(){ 58 | return userService.findSevenDaysUser(); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/controller/admin/SysLogController.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.controller.admin; 2 | 3 | import com.github.pagehelper.PageHelper; 4 | import com.github.pagehelper.PageInfo; 5 | import com.zx.blog.entity.SysLog; 6 | import com.zx.blog.service.SysLogService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.ui.Model; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.bind.annotation.RequestParam; 13 | 14 | import java.util.List; 15 | 16 | @Controller 17 | @RequestMapping("/admin") 18 | public class SysLogController { 19 | 20 | private final SysLogService sysLogService; 21 | 22 | public SysLogController(SysLogService sysLogService) { 23 | this.sysLogService = sysLogService; 24 | } 25 | 26 | /** 27 | * 查询所有日志 28 | * 29 | * @return 30 | */ 31 | @RequestMapping(value = "/log", method = RequestMethod.GET) 32 | public String findAll(@RequestParam(defaultValue = "1", value = "pageNum") Integer pageNum, @RequestParam(defaultValue = "12", value = "pageSize") Integer pageSize, 33 | Model model) { 34 | PageHelper.startPage(pageNum, pageSize); 35 | List sysLogList = sysLogService.findAll(); 36 | PageInfo sysLogPageInfo = new PageInfo<>(sysLogList); 37 | model.addAttribute("sysLogsPage", sysLogPageInfo); 38 | return "admin/log"; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/controller/admin/UserController.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.controller.admin; 2 | 3 | import com.zx.blog.entity.User; 4 | import com.zx.blog.service.UserService; 5 | import com.zx.blog.exception.BlogException; 6 | import com.zx.blog.util.ObjectUtil; 7 | import org.springframework.security.core.Authentication; 8 | import org.springframework.security.core.context.SecurityContextHolder; 9 | import org.springframework.stereotype.Controller; 10 | import org.springframework.ui.Model; 11 | import org.springframework.web.bind.annotation.PathVariable; 12 | import org.springframework.web.bind.annotation.RequestMapping; 13 | import org.springframework.web.bind.annotation.RequestMethod; 14 | 15 | import java.util.Map; 16 | 17 | 18 | @Controller 19 | @RequestMapping("/admin") 20 | public class UserController { 21 | 22 | private final UserService userService; 23 | 24 | public UserController(UserService userService) { 25 | this.userService = userService; 26 | } 27 | 28 | /** 29 | * 后台登录页面 30 | * 31 | * @return 32 | */ 33 | @RequestMapping(value = "/login", method = RequestMethod.GET) 34 | public String login() { 35 | 36 | return "admin/login"; 37 | } 38 | 39 | 40 | /** 41 | * 后台首页 42 | * 43 | * @param model 44 | * @return 45 | */ 46 | @RequestMapping(value = {"/", "/index"}, method = RequestMethod.GET) 47 | public String adminIndex(Model model) { 48 | Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 49 | String name = auth.getName(); 50 | Map userMap = ObjectUtil.getStringToMap(name); 51 | User user = userService.getUserByName(String.valueOf(userMap.get("username"))); 52 | model.addAttribute("user", user); 53 | return "admin/index"; 54 | } 55 | 56 | /** 57 | * 个人信息页 58 | * 59 | * @param model 60 | * @return 61 | */ 62 | @RequestMapping(value = "/getUserInfo/{id}", method = RequestMethod.GET) 63 | public String getUserInfo(@PathVariable("id") Long id, Model model) { 64 | if (id != null) { 65 | User user = userService.getUserById(id); 66 | model.addAttribute("user", user); 67 | return "admin/user_info"; 68 | } 69 | throw new BlogException("404", "该用户不存在"); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/controller/admin/ValidateCodeController.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.controller.admin; 2 | 3 | import com.wf.captcha.SpecCaptcha; 4 | import com.zx.blog.util.RedisComponentUtils; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RestController; 8 | 9 | import javax.servlet.http.HttpServletRequest; 10 | import javax.servlet.http.HttpServletResponse; 11 | import java.util.HashMap; 12 | import java.util.Map; 13 | import java.util.UUID; 14 | 15 | @RestController 16 | public class ValidateCodeController { 17 | 18 | private final RedisComponentUtils redisService; 19 | 20 | public ValidateCodeController(RedisComponentUtils redisService) { 21 | this.redisService = redisService; 22 | } 23 | 24 | @RequestMapping("/captcha") 25 | public Map captcha(HttpServletRequest request, HttpServletResponse response) throws Exception { 26 | Map result = new HashMap<>(3); 27 | 28 | SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5); 29 | String verCode = specCaptcha.text().toLowerCase(); 30 | String key = UUID.randomUUID().toString(); 31 | // 存入redis并设置过期时间为30分钟 32 | redisService.set(key, verCode, (long) 60); 33 | // 将key和base64返回给前端 34 | result.put("key", key); 35 | result.put("image", specCaptcha.toBase64()); 36 | 37 | return result; 38 | } 39 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/controller/blog/BlogLinkController.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.controller.blog; 2 | 3 | import com.zx.blog.annotation.SystemLog; 4 | import com.zx.blog.entity.Link; 5 | import com.zx.blog.service.LinkService; 6 | import com.zx.blog.exception.BlogException; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Controller; 9 | import org.springframework.ui.Model; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | 13 | 14 | /** 15 | * @author zouxu 16 | * @date 2020/3/26 14:17 17 | */ 18 | @Controller 19 | public class BlogLinkController { 20 | 21 | private final LinkService linkService; 22 | 23 | @Autowired 24 | public BlogLinkController(LinkService linkService) { 25 | this.linkService = linkService; 26 | } 27 | 28 | 29 | /** 30 | * 首页友链 31 | * 32 | * @param model 33 | * @return 34 | */ 35 | @RequestMapping(value = "/getShowLink", method = RequestMethod.GET) 36 | public String getShowLink(Model model) { 37 | model.addAttribute("links", linkService.getShowLink()); 38 | 39 | return "blog/index"; 40 | } 41 | 42 | 43 | /** 44 | * 申请友链页面 45 | */ 46 | @RequestMapping(value = "/link", method = RequestMethod.GET) 47 | public String link() { 48 | 49 | return "blog/link"; 50 | } 51 | 52 | @RequestMapping(value = "/success", method = RequestMethod.GET) 53 | public String success() { 54 | 55 | return "blog/success"; 56 | } 57 | 58 | /** 59 | * 申请 60 | * 61 | * @param link 62 | * @return 63 | */ 64 | @SystemLog(description = "提交友链信息") 65 | @RequestMapping(value = "/applyLink", method = RequestMethod.POST) 66 | public String applyLink(Link link) { 67 | Integer count = linkService.applyLink(link); 68 | if (count <= 0) { 69 | throw new BlogException("500", "未申请成功,请稍后再试"); 70 | } 71 | 72 | return "redirect:/success"; 73 | } 74 | 75 | 76 | } 77 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/controller/blog/BlogTagController.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.controller.blog; 2 | 3 | import com.github.pagehelper.PageHelper; 4 | import com.github.pagehelper.PageInfo; 5 | import com.zx.blog.entity.Blog; 6 | import com.zx.blog.service.BlogService; 7 | import com.zx.blog.service.TagService; 8 | import com.zx.blog.service.TypeService; 9 | import org.springframework.beans.factory.annotation.Autowired; 10 | import org.springframework.stereotype.Controller; 11 | import org.springframework.ui.Model; 12 | import org.springframework.web.bind.annotation.*; 13 | 14 | import java.util.List; 15 | 16 | /** 17 | * @author zouxu 18 | * @date 2020/3/26 14:17 19 | */ 20 | @Controller 21 | public class BlogTagController { 22 | 23 | @Autowired 24 | private BlogService blogService; 25 | 26 | /** 27 | * 标签 28 | * 29 | * @param tagId 30 | * @param model 31 | * @return 32 | */ 33 | @RequestMapping(value = "/tag/{tagId}", method = RequestMethod.GET) 34 | public String getTypeBlog(@RequestParam(defaultValue = "1", value = "pageNum") Integer pageNum, @RequestParam(defaultValue = "4", value = "pageSize") Integer pageSize, 35 | @PathVariable Long tagId, Model model) { 36 | PageHelper.startPage(pageNum, pageSize); 37 | List blogList = blogService.getBlogByTagId(tagId); 38 | PageInfo blogPageInfo = new PageInfo<>(blogList); 39 | model.addAttribute("blogList", blogPageInfo); 40 | model.addAttribute("tagId", tagId); 41 | 42 | return "blog/tag"; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/controller/blog/BlogTypeController.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.controller.blog; 2 | 3 | import com.github.pagehelper.PageHelper; 4 | import com.github.pagehelper.PageInfo; 5 | import com.zx.blog.entity.Blog; 6 | import com.zx.blog.entity.Type; 7 | import com.zx.blog.service.BlogService; 8 | import com.zx.blog.service.TagService; 9 | import com.zx.blog.service.TypeService; 10 | import org.springframework.beans.factory.annotation.Autowired; 11 | import org.springframework.stereotype.Controller; 12 | import org.springframework.ui.Model; 13 | import org.springframework.web.bind.annotation.*; 14 | 15 | import java.util.List; 16 | 17 | /** 18 | * @author zouxu 19 | * @date 2020/3/26 14:17 20 | */ 21 | @Controller 22 | public class BlogTypeController { 23 | 24 | @Autowired 25 | private BlogService blogService; 26 | 27 | /** 28 | * 分类 29 | * 30 | * @param typeId 31 | * @param model 32 | * @return 33 | */ 34 | @RequestMapping(value = "/type/{typeId}", method = RequestMethod.GET) 35 | public String getTypeBlog(@RequestParam(defaultValue = "1", value = "pageNum") Integer pageNum, @RequestParam(defaultValue = "4", value = "pageSize") Integer pageSize, 36 | @PathVariable Long typeId, Model model) { 37 | PageHelper.startPage(pageNum, pageSize); 38 | List blogList = blogService.getBlogByTypeId(typeId); 39 | PageInfo blogPageInfo = new PageInfo<>(blogList); 40 | model.addAttribute("blogList", blogPageInfo); 41 | model.addAttribute("typeId", typeId); 42 | 43 | return "blog/type"; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/controller/blog/TimeAndAboutController.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.controller.blog; 2 | 3 | import com.github.pagehelper.PageInfo; 4 | import com.zx.blog.entity.Blog; 5 | import com.zx.blog.service.BlogService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Controller; 8 | import org.springframework.ui.Model; 9 | import org.springframework.web.bind.annotation.GetMapping; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RequestMethod; 12 | import org.springframework.web.bind.annotation.RequestParam; 13 | 14 | /** 15 | * @author zouxu 16 | * @date 2020/3/29 22:43 17 | */ 18 | @Controller 19 | public class TimeAndAboutController { 20 | 21 | @Autowired 22 | private BlogService blogService; 23 | 24 | /** 25 | * 时间轴 26 | * 27 | * @param model 28 | * @return 29 | */ 30 | @RequestMapping(value = "/time", method = RequestMethod.GET) 31 | public String time(Model model) { 32 | model.addAttribute("timeBlog", blogService.getBlogTime()); 33 | return "blog/time"; 34 | } 35 | 36 | /** 37 | * 关于我 38 | * 39 | * @param model 40 | * @return 41 | */ 42 | @RequestMapping(value = "/about", method = RequestMethod.GET) 43 | public String about(Model model) { 44 | 45 | model.addAttribute("aboutBlog", blogService.getAbout()); 46 | 47 | return "blog/about"; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dao/BlogMapper.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dao; 2 | 3 | import com.zx.blog.entity.Blog; 4 | import com.zx.blog.dto.BlogViewsDto; 5 | import com.zx.blog.dto.SevenDaysDto; 6 | import org.apache.ibatis.annotations.Param; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | import java.util.Map; 11 | 12 | /** 13 | * @author zouxu 14 | * @date 2020/3/22 20:39 15 | */ 16 | @Repository 17 | public interface BlogMapper { 18 | 19 | int save(Blog blog); 20 | 21 | List adminBlogInfo(); 22 | 23 | List searchBlog(Blog blog); 24 | 25 | List searchTitleAndContent(String keyboard); 26 | 27 | int deleteBlog(Long id); 28 | 29 | Blog getBlogById(Long id); 30 | 31 | List getBlogHeadline(); 32 | 33 | List getListBlog(); 34 | 35 | List getViewsRanking(); 36 | 37 | List getRecommend(); 38 | 39 | List getCarousel(); 40 | 41 | List getBlogNotice(); 42 | 43 | List getBlogByTypeId(Long typeId); 44 | 45 | List getAbout(); 46 | 47 | List getBlogByTagId(Long tagId); 48 | 49 | List findSevenDaysBlog(); 50 | 51 | Integer blogCount(); 52 | 53 | void saveBlogAndTag(Map map); 54 | 55 | Integer deleteBlogAndTag(Long blogId); 56 | 57 | Integer updateBlog(Blog blog); 58 | 59 | void batchUpdateBlogViews(@Param("list") List dtoList); 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dao/LinkMapper.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dao; 2 | 3 | import com.zx.blog.entity.Link; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author zouxu 10 | * @date 2020/4/6 22:10 11 | */ 12 | @Repository 13 | public interface LinkMapper { 14 | 15 | /** 16 | * 友链申请 17 | */ 18 | Integer applyLink(Link link); 19 | 20 | /** 21 | * 友链状态更新 22 | */ 23 | Integer updateLink(Link link); 24 | 25 | /** 26 | * 查询全部友链 27 | */ 28 | List getListLink(); 29 | 30 | /** 31 | * 前端友链显示 32 | */ 33 | List getShowLink(); 34 | 35 | /** 36 | * 查询单个前端 37 | * @param id 38 | * @return 39 | */ 40 | Link getLinkById(Long id); 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dao/SysLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dao; 2 | 3 | import com.zx.blog.entity.SysLog; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author zouxu 10 | * @date 2020/3/31 19:47 11 | */ 12 | @Repository 13 | public interface SysLogMapper { 14 | 15 | void save(SysLog sysLog); 16 | 17 | List findAll(); 18 | } 19 | 20 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dao/TagMapper.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dao; 2 | 3 | import com.zx.blog.entity.Blog; 4 | import com.zx.blog.entity.Tag; 5 | import com.zx.blog.entity.Type; 6 | import org.apache.ibatis.annotations.Param; 7 | import org.springframework.stereotype.Repository; 8 | 9 | import java.util.List; 10 | 11 | 12 | /** 13 | * @author zouxu 14 | * @date 2020/3/20 20:23 15 | */ 16 | @Repository 17 | public interface TagMapper { 18 | 19 | List getListTag(); 20 | 21 | int saveTag(Tag tag); 22 | 23 | int deleteTag(Long id); 24 | 25 | int updateTag(Tag tag); 26 | 27 | Tag getByTagId(Long id); 28 | 29 | Tag getTagByName(String tagName); 30 | 31 | int updateBlog(Blog blog); 32 | 33 | Integer tagCount(); 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dao/TypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dao; 2 | 3 | import com.zx.blog.entity.Type; 4 | import org.springframework.stereotype.Repository; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author zouxu 10 | * @date 2020/3/20 20:23 11 | */ 12 | @Repository 13 | public interface TypeMapper { 14 | 15 | List getListType(); 16 | 17 | int saveType(Type type); 18 | 19 | int deleteType(Long id); 20 | 21 | int updateType(Type type); 22 | 23 | Type getByTypeId(Long id); 24 | 25 | Type getTypeByName(String typeName); 26 | 27 | Integer typeCount(); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dao/UserMapper.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dao; 2 | 3 | import com.zx.blog.entity.User; 4 | 5 | import com.zx.blog.dto.SevenDaysDto; 6 | import org.springframework.stereotype.Repository; 7 | 8 | import java.util.List; 9 | 10 | @Repository 11 | public interface UserMapper { 12 | 13 | User getUserByName(String userName); 14 | 15 | List findSevenDaysUser(); 16 | 17 | Integer userCount(); 18 | 19 | User getUserById(Long id); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dto/BlogViewsDto.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dto; 2 | 3 | /** 4 | * @author zouxu 5 | * @date 2020/7/24 1:54 6 | */ 7 | public class BlogViewsDto { 8 | private Long id; 9 | private Integer views; 10 | 11 | public BlogViewsDto(Long id, Integer views) { 12 | this.id = id; 13 | this.views = views; 14 | } 15 | 16 | public Long getId() { 17 | return id; 18 | } 19 | 20 | public void setId(Long id) { 21 | this.id = id; 22 | } 23 | 24 | public Integer getViews() { 25 | return views; 26 | } 27 | 28 | public void setViews(Integer views) { 29 | this.views = views; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dto/LoginRequest.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 4 | 5 | /** 6 | * 登录DTO 7 | */ 8 | @JsonIgnoreProperties(ignoreUnknown = true) 9 | public class LoginRequest { 10 | private String username; 11 | private String password; 12 | private String cKey; 13 | private String captcha; 14 | 15 | public LoginRequest() {} 16 | 17 | public String getUsername() { 18 | return username; 19 | } 20 | 21 | public void setUsername(String username) { 22 | this.username = username; 23 | } 24 | 25 | public String getPassword() { 26 | return password; 27 | } 28 | 29 | public void setPassword(String password) { 30 | this.password = password; 31 | } 32 | 33 | public String getcKey() { 34 | return cKey; 35 | } 36 | 37 | public void setcKey(String cKey) { 38 | this.cKey = cKey; 39 | } 40 | 41 | public String getCaptcha() { 42 | return captcha; 43 | } 44 | 45 | public void setCaptcha(String captcha) { 46 | this.captcha = captcha; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/dto/SevenDaysDto.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.dto; 2 | 3 | import com.fasterxml.jackson.annotation.JsonFormat; 4 | 5 | 6 | /** 7 | * @author zouxu 8 | * @date 2020/4/2 23:50 9 | */ 10 | public class SevenDaysDto { 11 | 12 | @JsonFormat(pattern = "yyyy-MM-dd") 13 | private String clickDate; 14 | private Integer count; 15 | 16 | public String getClickDate() { 17 | return clickDate; 18 | } 19 | 20 | public void setClickDate(String clickDate) { 21 | this.clickDate = clickDate; 22 | } 23 | 24 | public Integer getCount() { 25 | return count; 26 | } 27 | 28 | public void setCount(Integer count) { 29 | this.count = count; 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/entity/Link.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.entity; 2 | 3 | import java.util.Date; 4 | 5 | public class Link { 6 | 7 | private Integer id; //ID 8 | private String linkName; //友链名称 9 | private String linkUrl; //链接 10 | private Integer linkRank; //排序 11 | private Date createTime; //申请时间 12 | private Date updateTime; //更新时间 13 | private boolean isDeleted; //是否删除 14 | 15 | 16 | public Integer getId() { 17 | return id; 18 | } 19 | 20 | public void setId(Integer id) { 21 | this.id = id; 22 | } 23 | 24 | public String getLinkName() { 25 | return linkName; 26 | } 27 | 28 | public void setLinkName(String linkName) { 29 | this.linkName = linkName; 30 | } 31 | 32 | public String getLinkUrl() { 33 | return linkUrl; 34 | } 35 | 36 | public void setLinkUrl(String linkUrl) { 37 | this.linkUrl = linkUrl; 38 | } 39 | 40 | public Integer getLinkRank() { 41 | return linkRank; 42 | } 43 | 44 | public void setLinkRank(Integer linkRank) { 45 | this.linkRank = linkRank; 46 | } 47 | 48 | public Date getCreateTime() { 49 | return createTime; 50 | } 51 | 52 | public void setCreateTime(Date createTime) { 53 | this.createTime = createTime; 54 | } 55 | 56 | public Date getUpdateTime() { 57 | return updateTime; 58 | } 59 | 60 | public void setUpdateTime(Date updateTime) { 61 | this.updateTime = updateTime; 62 | } 63 | 64 | public Boolean getIsDeleted() { 65 | return isDeleted; 66 | } 67 | 68 | public void setIsDeleted(Boolean isDeleted) { 69 | this.isDeleted = isDeleted; 70 | } 71 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/entity/Tag.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.entity; 2 | 3 | import javax.validation.constraints.NotBlank; 4 | import java.io.Serializable; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | public class Tag implements Serializable { 9 | 10 | private static final long serialVersionUID = 5955388630409606044L; 11 | 12 | private Long id; 13 | @NotBlank(message = "标签名称不允许为空") 14 | private String name; //标签名字 15 | private Long state; //是否启用标签 16 | 17 | 18 | private List blogs = new ArrayList<>(); 19 | 20 | public Long getId() { 21 | return id; 22 | } 23 | 24 | public void setId(Long id) { 25 | this.id = id; 26 | } 27 | 28 | public String getName() { 29 | return name; 30 | } 31 | 32 | public void setName(String name) { 33 | this.name = name; 34 | } 35 | 36 | public Long getState() { 37 | return state; 38 | } 39 | 40 | public void setState(Long state) { 41 | this.state = state; 42 | } 43 | 44 | public List getBlogs() { 45 | return blogs; 46 | } 47 | 48 | public void setBlogs(List blogs) { 49 | this.blogs = blogs; 50 | } 51 | 52 | @Override 53 | public String toString() { 54 | return "Tag{" + 55 | "id=" + id + 56 | ", name='" + name + '\'' + 57 | ", state=" + state + 58 | ", blogs=" + blogs + 59 | '}'; 60 | } 61 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/entity/Type.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.entity; 2 | 3 | import javax.validation.constraints.NotBlank; 4 | import java.io.Serializable; 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | public class Type implements Serializable { 9 | 10 | private static final long serialVersionUID = 5317164912946035898L; 11 | 12 | private Long id; 13 | @NotBlank(message = "分类名称不允许为空") 14 | private String name; //分类名称 15 | private Long state; //是否启用分类 16 | 17 | private List blogs = new ArrayList<>(); 18 | 19 | public Long getId() { 20 | return id; 21 | } 22 | 23 | public void setId(Long id) { 24 | this.id = id; 25 | } 26 | 27 | public String getName() { 28 | return name; 29 | } 30 | 31 | public void setName(String name) { 32 | this.name = name; 33 | } 34 | 35 | public Long getState() { 36 | return state; 37 | } 38 | 39 | public void setState(Long state) { 40 | this.state = state; 41 | } 42 | 43 | public List getBlogs() { 44 | return blogs; 45 | } 46 | 47 | public void setBlogs(List blogs) { 48 | this.blogs = blogs; 49 | } 50 | 51 | @Override 52 | public String toString() { 53 | return "Type{" + 54 | "id=" + id + 55 | ", name='" + name + '\'' + 56 | ", state=" + state + 57 | ", blogs=" + blogs + 58 | '}'; 59 | } 60 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/exception/BlogException.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.exception; 2 | 3 | import com.zx.blog.service.BaseErrorService; 4 | 5 | public class BlogException extends RuntimeException { 6 | 7 | private static final long serialVersionUID = 1L; 8 | 9 | /** 10 | * 错误码 11 | */ 12 | protected String errorCode; 13 | /** 14 | * 错误信息 15 | */ 16 | protected String errorMsg; 17 | 18 | public BlogException() { 19 | super(); 20 | } 21 | 22 | public BlogException(BaseErrorService errorInfoInterface) { 23 | super(errorInfoInterface.getResultCode()); 24 | this.errorCode = errorInfoInterface.getResultCode(); 25 | this.errorMsg = errorInfoInterface.getResultMsg(); 26 | } 27 | 28 | public BlogException(BaseErrorService errorInfoInterface, Throwable cause) { 29 | super(errorInfoInterface.getResultCode(), cause); 30 | this.errorCode = errorInfoInterface.getResultCode(); 31 | this.errorMsg = errorInfoInterface.getResultMsg(); 32 | } 33 | 34 | public BlogException(String errorMsg) { 35 | super(errorMsg); 36 | this.errorMsg = errorMsg; 37 | } 38 | 39 | public BlogException(String errorCode, String errorMsg) { 40 | super(errorCode); 41 | this.errorCode = errorCode; 42 | this.errorMsg = errorMsg; 43 | } 44 | 45 | public BlogException(String errorCode, String errorMsg, Throwable cause) { 46 | super(errorCode, cause); 47 | this.errorCode = errorCode; 48 | this.errorMsg = errorMsg; 49 | } 50 | 51 | 52 | public String getErrorCode() { 53 | return errorCode; 54 | } 55 | 56 | public void setErrorCode(String errorCode) { 57 | this.errorCode = errorCode; 58 | } 59 | 60 | public String getErrorMsg() { 61 | return errorMsg; 62 | } 63 | 64 | public void setErrorMsg(String errorMsg) { 65 | this.errorMsg = errorMsg; 66 | } 67 | 68 | @Override 69 | public String getMessage() { 70 | return errorMsg; 71 | } 72 | 73 | @Override 74 | public Throwable fillInStackTrace() { 75 | return this; 76 | } 77 | 78 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/exception/ValidateCodeException.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.exception; 2 | 3 | import org.springframework.security.core.AuthenticationException; 4 | 5 | public class ValidateCodeException extends AuthenticationException { 6 | private static final long serialVersionUID = 5022575393500654458L; 7 | 8 | public ValidateCodeException(String message) { 9 | super(message); 10 | } 11 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/handler/BloomFilterHelper.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.handler; 2 | 3 | import com.google.common.base.Preconditions; 4 | import com.google.common.hash.Funnel; 5 | import com.google.common.hash.Hashing; 6 | 7 | public class BloomFilterHelper { 8 | private int numHashFunctions; 9 | 10 | private int bitSize; 11 | 12 | private Funnel funnel; 13 | 14 | public BloomFilterHelper(Funnel funnel, int expectedInsertions, double fpp) { 15 | Preconditions.checkArgument(funnel != null, "funnel不能为空"); 16 | this.funnel = funnel; 17 | bitSize = optimalNumOfBits(expectedInsertions, fpp); 18 | numHashFunctions = optimalNumOfHashFunctions(expectedInsertions, bitSize); 19 | } 20 | 21 | public int[] murmurHashOffset(T value) { 22 | int[] offset = new int[numHashFunctions]; 23 | 24 | long hash64 = Hashing.murmur3_128().hashObject(value, funnel).asLong(); 25 | int hash1 = (int) hash64; 26 | int hash2 = (int) (hash64 >>> 32); 27 | for (int i = 1; i <= numHashFunctions; i++) { 28 | int nextHash = hash1 + i * hash2; 29 | if (nextHash < 0) { 30 | nextHash = ~nextHash; 31 | } 32 | offset[i - 1] = nextHash % bitSize; 33 | } 34 | 35 | return offset; 36 | } 37 | 38 | /** 39 | * 计算bit数组的长度 40 | */ 41 | private int optimalNumOfBits(long n, double p) { 42 | if (p == 0) { 43 | p = Double.MIN_VALUE; 44 | } 45 | return (int) (-n * Math.log(p) / (Math.log(2) * Math.log(2))); 46 | } 47 | 48 | /** 49 | * 计算hash方法执行次数 50 | */ 51 | private int optimalNumOfHashFunctions(long n, long m) { 52 | return Math.max(1, (int) Math.round((double) m / n * Math.log(2))); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/handler/GlobalExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.handler; 2 | 3 | import com.zx.blog.service.impl.BaseErrorServiceImpl; 4 | import com.zx.blog.exception.BlogException; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | 9 | import org.springframework.ui.Model; 10 | import org.springframework.web.bind.annotation.ControllerAdvice; 11 | import org.springframework.web.bind.annotation.ExceptionHandler; 12 | 13 | import javax.servlet.http.HttpServletRequest; 14 | 15 | @ControllerAdvice 16 | public class GlobalExceptionHandler { 17 | private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class); 18 | 19 | 20 | /** 21 | * 处理自定义的业务异常 22 | * 23 | * @param req 24 | * @param e 25 | * @return 26 | */ 27 | @ExceptionHandler(value = BlogException.class) 28 | public String bizExceptionHandler(HttpServletRequest req, BlogException e, Model model) { 29 | logger.error("发生业务异常!原因是:{}", e.getErrorMsg()); 30 | model.addAttribute("code", e.getErrorCode()); 31 | model.addAttribute("resultMsg", e.getErrorMsg()); 32 | return "error/error"; 33 | } 34 | 35 | /** 36 | * 处理空指针的异常 37 | * 38 | * @param req 39 | * @param e 40 | * @return 41 | */ 42 | @ExceptionHandler(value = NullPointerException.class) 43 | public String exceptionHandler(HttpServletRequest req, NullPointerException e, Model model) { 44 | logger.error("发生空指针异常!原因是:", e); 45 | model.addAttribute("code", BaseErrorServiceImpl.BODY_NOT_MATCH.getResultCode()); 46 | model.addAttribute("resultMsg", BaseErrorServiceImpl.BODY_NOT_MATCH.getResultMsg()); 47 | return "error/error"; 48 | 49 | } 50 | 51 | /** 52 | * 处理其他异常 53 | * 54 | * @param req 55 | * @param e 56 | * @return 57 | */ 58 | @ExceptionHandler(value = Exception.class) 59 | public String exceptionHandler(HttpServletRequest req, Exception e, Model model) { 60 | logger.error("未知异常!原因是:", e); 61 | model.addAttribute("code", BaseErrorServiceImpl.INTERNAL_SERVER_ERROR.getResultCode()); 62 | model.addAttribute("resultMsg", BaseErrorServiceImpl.INTERNAL_SERVER_ERROR.getResultMsg()); 63 | return "error/error"; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/handler/MyAuthenticationFailureHandler.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.handler; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.zx.blog.exception.ValidateCodeException; 5 | import org.springframework.context.annotation.Bean; 6 | import org.springframework.security.authentication.*; 7 | import org.springframework.security.core.AuthenticationException; 8 | import org.springframework.security.web.authentication.AuthenticationFailureHandler; 9 | import org.springframework.stereotype.Component; 10 | 11 | import javax.servlet.ServletException; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.IOException; 15 | import java.io.PrintWriter; 16 | import java.util.HashMap; 17 | import java.util.Map; 18 | 19 | @Component 20 | public class MyAuthenticationFailureHandler implements AuthenticationFailureHandler { 21 | @Override 22 | public void onAuthenticationFailure(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException { 23 | httpServletResponse.setContentType("application/json;charset=utf-8"); 24 | PrintWriter out = httpServletResponse.getWriter(); 25 | Map error = new HashMap<>(16); 26 | error.put("error", e.getMessage()); 27 | // 验证码自定义异常的处理 28 | if (e instanceof ValidateCodeException) { 29 | error.put("error", e.getMessage()); 30 | //Security内置的异常处理 31 | } else if (e instanceof LockedException) { 32 | error.put("error", "账户被锁定请联系管理员!"); 33 | } else if (e instanceof CredentialsExpiredException) { 34 | error.put("error", "密码过期请联系管理员!"); 35 | } else if (e instanceof AccountExpiredException) { 36 | error.put("error", "账户过期请联系管理员!"); 37 | } else if (e instanceof DisabledException) { 38 | error.put("error", "账户被禁用请联系管理员!"); 39 | } else if (e instanceof BadCredentialsException) { 40 | error.put("error", "用户名密码输入错误,请重新输入!"); 41 | } 42 | out.write(JSON.toJSONString(error)); 43 | out.flush(); 44 | out.close(); 45 | 46 | } 47 | 48 | @Bean 49 | public MyAuthenticationFailureHandler getMyAuthenticationFailureHandler() { 50 | return new MyAuthenticationFailureHandler(); 51 | } 52 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/handler/ScheduledTasksHandler.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.handler; 2 | 3 | import com.zx.blog.dao.BlogMapper; 4 | import com.zx.blog.util.RedisComponentUtils; 5 | import com.zx.blog.dto.BlogViewsDto; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.scheduling.annotation.Scheduled; 8 | import org.springframework.stereotype.Component; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | import java.util.Set; 13 | 14 | @Component 15 | public class ScheduledTasksHandler { 16 | 17 | private final RedisComponentUtils redisService; 18 | 19 | private final BlogMapper blogMapper; 20 | 21 | public ScheduledTasksHandler(RedisComponentUtils redisService, BlogMapper blogMapper) { 22 | this.redisService = redisService; 23 | this.blogMapper = blogMapper; 24 | } 25 | 26 | /** 27 | * 同步文章访问量 28 | */ 29 | @Scheduled(cron = "00 30 04 ? * * ") //每天凌晨4:30执行 30 | public void syncPostViews() { 31 | List dtoList = new ArrayList<>(); 32 | //从redis取值封装List 33 | Integer prefixLength = "blog_views::blog_views_id_".length(); 34 | Set keySet = redisService.keys("blog_views::blog_views_id_*"); 35 | for (String key : keySet) { 36 | Integer hKey = (Integer) redisService.hmGet(key, key.substring(prefixLength)); 37 | dtoList.add(new BlogViewsDto(Long.parseLong(key.substring(prefixLength)),hKey)); 38 | } 39 | //更新到数据库中 40 | blogMapper.batchUpdateBlogViews(dtoList); 41 | } 42 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/BaseErrorService.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service; 2 | 3 | public interface BaseErrorService { 4 | 5 | /** 6 | * 错误码 7 | */ 8 | String getResultCode(); 9 | 10 | /** 11 | * 错误描述 12 | */ 13 | String getResultMsg(); 14 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/BlogService.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service; 2 | 3 | import com.github.pagehelper.PageInfo; 4 | import com.zx.blog.entity.Blog; 5 | import com.zx.blog.dto.SevenDaysDto; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * @author zouxu 12 | * @date 2020/3/22 20:37 13 | */ 14 | public interface BlogService { 15 | 16 | int save(Blog blog); 17 | 18 | List adminBlogInfo(); 19 | 20 | List searchBlog(Blog query); 21 | 22 | int deleteBlog(Long id); 23 | 24 | Map getBlogById(Long id); 25 | 26 | Blog getBlogConvert(Long id); 27 | 28 | PageInfo getListBlog(int offset, int count); 29 | 30 | List getViewsRanking(); 31 | 32 | /** 33 | * 修改文章阅读量 34 | * @param blogId 35 | * @return 36 | */ 37 | Integer updateBlogView(Long blogId); 38 | 39 | /** 40 | * 获得某篇文章的访问量 41 | * @param blogId 42 | * @returnb 43 | */ 44 | Integer getBlogViewsByBlogId(Long blogId); 45 | /** 46 | * 首页头条 47 | * @return 48 | */ 49 | List getBlogHeadline(); 50 | 51 | List getRecommend(); 52 | 53 | List getCarousel(); 54 | 55 | List getBlogNotice(); 56 | 57 | List searchTitleAndContent(String keyboard); 58 | 59 | List getBlogByTypeId(Long typeId); 60 | 61 | List getBlogTime(); 62 | 63 | List getAbout(); 64 | 65 | List getBlogByTagId(Long tagId); 66 | 67 | List findSevenDaysBlog(); 68 | 69 | Integer countBlog(); 70 | 71 | 72 | } 73 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/LinkService.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service; 2 | 3 | import com.zx.blog.entity.Link; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @author zouxu 9 | * @date 2020/4/6 22:03 10 | */ 11 | public interface LinkService { 12 | 13 | /** 14 | * 友链申请 15 | */ 16 | Integer applyLink(Link link); 17 | 18 | /** 19 | * 友链状态更新 20 | */ 21 | Integer updateLink(Link link); 22 | 23 | /** 24 | * 查询全部友链 25 | */ 26 | List getListLink(); 27 | 28 | /** 29 | * 前端友链显示 30 | */ 31 | List getShowLink(); 32 | 33 | Link getLinkById(Long id); 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/SysLogService.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service; 2 | 3 | import com.zx.blog.entity.SysLog; 4 | 5 | import java.util.List; 6 | 7 | public interface SysLogService { 8 | void save(SysLog sysLog); 9 | 10 | List findAll(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/TagService.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service; 2 | 3 | import com.zx.blog.entity.Blog; 4 | import com.zx.blog.entity.Tag; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author zouxu 10 | * @date 2020/3/20 20:25 11 | */ 12 | 13 | public interface TagService { 14 | 15 | List getListTag(); 16 | 17 | List listTagByIds(String ids); 18 | 19 | int saveTag(Tag tag); 20 | 21 | int deleteTag(Long id); 22 | 23 | int updateTag(Tag tag); 24 | 25 | Tag getTagById(Long id); 26 | 27 | Tag getTagByName(String tagName); 28 | 29 | Integer countTag(); 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/TypeService.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service; 2 | 3 | 4 | import com.zx.blog.entity.Type; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * @author zouxu 10 | * @date 2020/3/20 20:25 11 | */ 12 | 13 | public interface TypeService { 14 | 15 | List getListType(); 16 | 17 | int saveType(Type type); 18 | 19 | int deleteType(Long id); 20 | 21 | int updateType(Type type); 22 | 23 | Type getTypeById(Long id); 24 | 25 | Type getTypeByName(String typeName); 26 | 27 | Integer countType(); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/UserService.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service; 2 | 3 | import com.zx.blog.entity.User; 4 | import com.zx.blog.dto.SevenDaysDto; 5 | import org.springframework.security.core.userdetails.UserDetailsService; 6 | 7 | import java.util.List; 8 | 9 | public interface UserService extends UserDetailsService { 10 | 11 | List findSevenDaysUser(); 12 | 13 | Integer countUser(); 14 | 15 | User getUserByName(String name); 16 | 17 | User getUserById(Long id); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/impl/BaseErrorServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service.impl; 2 | 3 | import com.zx.blog.service.BaseErrorService; 4 | 5 | public enum BaseErrorServiceImpl implements BaseErrorService { 6 | 7 | // 数据操作错误定义 8 | SUCCESS("200", "成功!"), 9 | BODY_NOT_MATCH("400", "请求的数据格式不符!"), 10 | SIGNATURE_NOT_MATCH("401", "请求的数字签名不匹配!"), 11 | NOT_FOUND("404", "未找到该资源!"), 12 | INTERNAL_SERVER_ERROR("500", "服务器内部错误!"), 13 | SERVER_BUSY("503", "服务器正忙,请稍后再试!"); 14 | 15 | /** 16 | * 错误码 17 | */ 18 | private String resultCode; 19 | 20 | /** 21 | * 错误描述 22 | */ 23 | private String resultMsg; 24 | 25 | BaseErrorServiceImpl(String resultCode, String resultMsg) { 26 | this.resultCode = resultCode; 27 | this.resultMsg = resultMsg; 28 | } 29 | 30 | @Override 31 | public String getResultCode() { 32 | return resultCode; 33 | } 34 | 35 | @Override 36 | public String getResultMsg() { 37 | return resultMsg; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/impl/LinkServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service.impl; 2 | 3 | import com.zx.blog.dao.LinkMapper; 4 | import com.zx.blog.entity.Link; 5 | import com.zx.blog.service.LinkService; 6 | import com.zx.blog.exception.BlogException; 7 | import org.apache.commons.lang3.StringUtils; 8 | import org.springframework.beans.factory.annotation.Autowired; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.util.Date; 12 | import java.util.List; 13 | 14 | /** 15 | * @author zouxu 16 | * @date 2020/4/6 22:03 17 | */ 18 | @Service 19 | public class LinkServiceImpl implements LinkService { 20 | 21 | private final LinkMapper linkMapper; 22 | 23 | @Autowired 24 | public LinkServiceImpl(LinkMapper linkMapper) { 25 | this.linkMapper = linkMapper; 26 | } 27 | 28 | @Override 29 | public Integer applyLink(Link link) { 30 | Integer count = 0; 31 | 32 | if (StringUtils.isBlank(link.getLinkName())) { 33 | throw new BlogException("500", "名称参数错误"); 34 | } 35 | if (StringUtils.isBlank(link.getLinkUrl())) { 36 | throw new BlogException("500", "URL参数错误"); 37 | } 38 | 39 | link.setCreateTime(new Date()); 40 | link.setUpdateTime(new Date()); 41 | link.setLinkRank(99); 42 | 43 | if (link.getIsDeleted() == null) { 44 | link.setIsDeleted(false); 45 | } else { 46 | link.setIsDeleted(link.getIsDeleted()); 47 | } 48 | count = linkMapper.applyLink(link); 49 | 50 | return count; 51 | } 52 | 53 | @Override 54 | public Integer updateLink(Link link) { 55 | Integer count = 0; 56 | if (link.getLinkName() != null && link.getLinkUrl() != null) { 57 | link.setUpdateTime(new Date()); 58 | count = linkMapper.updateLink(link); 59 | } else { 60 | throw new BlogException("404", "友链不存在"); 61 | } 62 | return count; 63 | } 64 | 65 | @Override 66 | public List getListLink() { 67 | return linkMapper.getListLink(); 68 | } 69 | 70 | @Override 71 | public List getShowLink() { 72 | return linkMapper.getShowLink(); 73 | } 74 | 75 | @Override 76 | public Link getLinkById(Long id) { 77 | if (id == null) { 78 | throw new BlogException("404","友链信息不存在"); 79 | } 80 | return linkMapper.getLinkById(id); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/impl/SysLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service.impl; 2 | 3 | import com.zx.blog.dao.SysLogMapper; 4 | import com.zx.blog.entity.SysLog; 5 | import com.zx.blog.service.SysLogService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | import org.springframework.transaction.annotation.Transactional; 9 | 10 | import java.util.List; 11 | 12 | @Service 13 | @Transactional(rollbackFor = Exception.class) 14 | public class SysLogServiceImpl implements SysLogService { 15 | 16 | private final SysLogMapper sysLogMapper; 17 | 18 | @Autowired 19 | public SysLogServiceImpl(SysLogMapper sysLogMapper) { 20 | this.sysLogMapper = sysLogMapper; 21 | } 22 | 23 | @Override 24 | public void save(SysLog sysLog) { 25 | sysLogMapper.save(sysLog); 26 | } 27 | 28 | @Override 29 | public List findAll() { 30 | return sysLogMapper.findAll(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/impl/TagServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service.impl; 2 | 3 | import com.zx.blog.dao.TagMapper; 4 | import com.zx.blog.entity.Blog; 5 | import com.zx.blog.entity.Tag; 6 | import com.zx.blog.service.TagService; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.stereotype.Service; 9 | import org.springframework.transaction.annotation.Transactional; 10 | 11 | import java.util.ArrayList; 12 | import java.util.List; 13 | 14 | 15 | /** 16 | * @author zouxu 17 | * @date 2020/3/20 20:26 18 | */ 19 | @Service 20 | @Transactional(rollbackFor = Exception.class) 21 | public class TagServiceImpl implements TagService { 22 | 23 | private final TagMapper tagMapper; 24 | 25 | @Autowired 26 | public TagServiceImpl(TagMapper tagMapper) { 27 | this.tagMapper = tagMapper; 28 | } 29 | 30 | 31 | @Override 32 | public List getListTag() { 33 | return tagMapper.getListTag(); 34 | } 35 | 36 | @Override 37 | public List listTagByIds(String ids) { 38 | List list = new ArrayList<>(); 39 | if (!"".equals(ids) && ids != null){ 40 | String[] idsArray = ids.split(","); 41 | for (int i = 0; i < idsArray.length; i++) { 42 | Tag tag = tagMapper.getByTagId(Long.parseLong(idsArray[i])); 43 | list.add(tag); 44 | } 45 | } 46 | return list; 47 | } 48 | 49 | 50 | @Override 51 | public int saveTag(Tag tag) { 52 | return tagMapper.saveTag(tag); 53 | } 54 | 55 | @Override 56 | public int deleteTag(Long id) { 57 | 58 | return tagMapper.deleteTag(id); 59 | } 60 | 61 | @Override 62 | public int updateTag(Tag tag) { 63 | return tagMapper.updateTag(tag); 64 | } 65 | 66 | @Override 67 | public Tag getTagById(Long id) { 68 | return tagMapper.getByTagId(id); 69 | } 70 | 71 | @Override 72 | public Tag getTagByName(String tagName) { 73 | return tagMapper.getTagByName(tagName); 74 | } 75 | 76 | 77 | @Override 78 | public Integer countTag() { 79 | return tagMapper.tagCount(); 80 | } 81 | 82 | 83 | 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/service/impl/TypeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.service.impl; 2 | 3 | import com.zx.blog.dao.TypeMapper; 4 | import com.zx.blog.entity.Type; 5 | import com.zx.blog.service.TypeService; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.stereotype.Service; 8 | import org.springframework.transaction.annotation.Transactional; 9 | 10 | import java.util.List; 11 | 12 | 13 | /** 14 | * @author zouxu 15 | * @date 2020/3/20 20:26 16 | */ 17 | @Service 18 | @Transactional(rollbackFor = Exception.class) 19 | public class TypeServiceImpl implements TypeService { 20 | 21 | private final TypeMapper typeMapper; 22 | 23 | @Autowired 24 | public TypeServiceImpl(TypeMapper typeMapper) { 25 | this.typeMapper = typeMapper; 26 | } 27 | 28 | 29 | @Override 30 | public List getListType() { 31 | return typeMapper.getListType(); 32 | } 33 | 34 | @Override 35 | public int saveType(Type type) { 36 | return typeMapper.saveType(type); 37 | } 38 | 39 | @Override 40 | public int deleteType(Long id) { 41 | return typeMapper.deleteType(id); 42 | } 43 | 44 | @Override 45 | public int updateType(Type type) { 46 | return typeMapper.updateType(type); 47 | } 48 | 49 | @Override 50 | public Type getTypeById(Long id) { 51 | return typeMapper.getByTypeId(id); 52 | } 53 | 54 | @Override 55 | public Type getTypeByName(String typeName) { 56 | return typeMapper.getTypeByName(typeName); 57 | } 58 | 59 | @Override 60 | public Integer countType() { 61 | return typeMapper.typeCount(); 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/util/FileCopyUtil.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.util; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import java.io.File; 6 | import java.io.FileInputStream; 7 | import java.io.FileOutputStream; 8 | import java.io.IOException; 9 | 10 | /** 11 | * @author zouxu 12 | * @date 2020/4/6 16:24 13 | */ 14 | @Component 15 | public class FileCopyUtil { 16 | 17 | /** 18 | * 文件复制 19 | * 20 | * @param src 21 | * @param destDir 22 | * @param fileName 23 | * @throws IOException 24 | */ 25 | public static void copyFile(String src, String destDir, String fileName) throws IOException { 26 | FileInputStream in = new FileInputStream(src); 27 | File fileDir = new File(destDir); 28 | if (!fileDir.isDirectory()) { 29 | fileDir.mkdirs(); 30 | } 31 | File file = new File(fileDir, fileName); 32 | 33 | if (!file.exists()) { 34 | file.createNewFile(); 35 | } 36 | FileOutputStream out = new FileOutputStream(file); 37 | int c; 38 | byte[] buffer = new byte[1024]; 39 | while ((c = in.read(buffer)) != -1) { 40 | for (int i = 0; i < c; i++) { 41 | out.write(buffer[i]); 42 | } 43 | 44 | } 45 | in.close(); 46 | out.close(); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/util/IpInfoUtil.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.util; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | import java.net.InetAddress; 7 | import java.net.UnknownHostException; 8 | 9 | @Component 10 | public class IpInfoUtil { 11 | 12 | /** 13 | * 获取客户端IP地址 14 | * 15 | * @param request 请求 16 | * @return 17 | */ 18 | public String getIpAddr(HttpServletRequest request) { 19 | 20 | String ip = request.getHeader("x-forwarded-for"); 21 | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 22 | ip = request.getHeader("Proxy-Client-IP"); 23 | } 24 | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 25 | ip = request.getHeader("WL-Proxy-Client-IP"); 26 | } 27 | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 28 | ip = request.getRemoteAddr(); 29 | if ("127.0.0.1".equals(ip)) { 30 | //根据网卡取本机配置的IP 31 | InetAddress inet = null; 32 | try { 33 | inet = InetAddress.getLocalHost(); 34 | } catch (UnknownHostException e) { 35 | e.printStackTrace(); 36 | } 37 | if (inet != null) { 38 | ip = inet.getHostAddress(); 39 | } 40 | } 41 | } 42 | // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 43 | if (ip != null && ip.length() > 15) { 44 | if (ip.indexOf(",") > 0) { 45 | ip = ip.substring(0, ip.indexOf(",")); 46 | } 47 | } 48 | if ("0:0:0:0:0:0:0:1".equals(ip)) { 49 | ip = "127.0.0.1"; 50 | } 51 | return ip; 52 | } 53 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/util/JwtUtils.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.util; 2 | 3 | import io.jsonwebtoken.Claims; 4 | import io.jsonwebtoken.Jws; 5 | import io.jsonwebtoken.Jwts; 6 | import io.jsonwebtoken.SignatureAlgorithm; 7 | import org.joda.time.DateTime; 8 | 9 | import java.security.PrivateKey; 10 | import java.security.PublicKey; 11 | import java.util.Map; 12 | 13 | public class JwtUtils { 14 | /** 15 | * 私钥加密token 16 | * 17 | * @param map 载荷中的数据 18 | * @param expireMinutes 过期时间,单位秒 19 | * @return 20 | * @throws Exception 21 | */ 22 | public static String generateToken(Map map, PrivateKey key, int expireMinutes) throws Exception { 23 | return Jwts.builder() 24 | .setClaims(map) 25 | .setExpiration(DateTime.now().plusMinutes(expireMinutes).toDate()) 26 | .signWith(key, SignatureAlgorithm.RS256) 27 | .compact(); 28 | } 29 | 30 | /** 31 | * 公钥解析token 32 | * 33 | * @param token 用户请求中的token 34 | * @return 35 | * @throws Exception 36 | */ 37 | private static Jws parserToken(String token, PublicKey key) { 38 | return Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token); 39 | } 40 | 41 | /** 42 | * 获取token中的用户信息 43 | * 44 | * @param token 用户请求中的令牌 45 | * @return 用户信息 46 | * @throws Exception 47 | */ 48 | public static Map getInfoFromToken(String token, PublicKey key) throws Exception { 49 | Jws claimsJws = parserToken(token, key); 50 | return claimsJws.getBody(); 51 | } 52 | 53 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/util/MyBeanUtils.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.util; 2 | 3 | import org.springframework.beans.BeanWrapper; 4 | import org.springframework.beans.BeanWrapperImpl; 5 | 6 | import java.beans.PropertyDescriptor; 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class MyBeanUtils { 11 | 12 | /** 13 | * 获取所有的属性值为空属性名数组 14 | * @param source 15 | * @return 16 | */ 17 | public static String[] getNullPropertyNames(Object source) { 18 | BeanWrapper beanWrapper = new BeanWrapperImpl(source); 19 | PropertyDescriptor[] pds = beanWrapper.getPropertyDescriptors(); 20 | List nullPropertyNames = new ArrayList<>(); 21 | for (PropertyDescriptor pd : pds) { 22 | String propertyName = pd.getName(); 23 | if (beanWrapper.getPropertyValue(propertyName) == null) { 24 | nullPropertyNames.add(propertyName); 25 | } 26 | } 27 | return nullPropertyNames.toArray(new String[nullPropertyNames.size()]); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/util/ObjectUtil.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.util; 2 | 3 | import cn.hutool.core.util.StrUtil; 4 | import com.alibaba.fastjson.JSON; 5 | import org.springframework.cglib.beans.BeanMap; 6 | 7 | import java.util.HashMap; 8 | import java.util.Map; 9 | 10 | public class ObjectUtil { 11 | 12 | public static String mapToString(Map paramMap) { 13 | if (paramMap == null) { 14 | return ""; 15 | } 16 | Map params = new HashMap<>(16); 17 | for (Map.Entry param : paramMap.entrySet()) { 18 | 19 | String key = param.getKey(); 20 | String paramValue = (param.getValue() != null && param.getValue().length > 0 ? param.getValue()[0] : ""); 21 | String obj = StrUtil.endWithIgnoreCase(param.getKey(), "password") ? "你是看不见我的" : paramValue; 22 | params.put(key, obj); 23 | } 24 | return JSON.toJSONString(params); 25 | } 26 | 27 | public static String mapToStringAll(Map paramMap) { 28 | 29 | if (paramMap == null) { 30 | return ""; 31 | } 32 | Map params = new HashMap<>(16); 33 | for (Map.Entry param : paramMap.entrySet()) { 34 | 35 | String key = param.getKey(); 36 | String paramValue = (param.getValue() != null && param.getValue().length > 0 ? param.getValue()[0] : ""); 37 | params.put(key, paramValue); 38 | } 39 | return JSON.toJSONString(params); 40 | } 41 | 42 | public static Map beanToMap(T bean) { 43 | Map map = new HashMap<>(16); 44 | if (bean != null) { 45 | BeanMap beanMap = BeanMap.create(bean); 46 | for (Object key : beanMap.keySet()) { 47 | map.put(key + "", beanMap.get(key)); 48 | } 49 | } 50 | return map; 51 | } 52 | 53 | public static Map getStringToMap(String str) { 54 | str = str.substring(1, str.length() - 1); 55 | //根据逗号截取字符串数组 56 | String[] str1 = str.split(","); 57 | //创建Map对象 58 | Map map = new HashMap<>(16); 59 | //循环加入map集合 60 | for (String s : str1) { 61 | //根据":"截取字符串数组 62 | String[] str2 = s.split("="); 63 | //str2[0]为KEY,str2[1]为值 64 | map.put(str2[0], str2[1]); 65 | } 66 | return map; 67 | } 68 | 69 | } -------------------------------------------------------------------------------- /src/main/java/com/zx/blog/util/ThreadPoolUtil.java: -------------------------------------------------------------------------------- 1 | package com.zx.blog.util; 2 | 3 | import java.util.concurrent.ArrayBlockingQueue; 4 | import java.util.concurrent.BlockingQueue; 5 | import java.util.concurrent.ThreadPoolExecutor; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | public class ThreadPoolUtil { 9 | 10 | /** 11 | * 线程缓冲队列 12 | */ 13 | private static BlockingQueue bqueue = new ArrayBlockingQueue(100); 14 | /** 15 | * 核心线程数,会一直存活,即使没有任务,线程池也会维护线程的最少数量 16 | */ 17 | private static final int SIZE_CORE_POOL = 5; 18 | /** 19 | * 线程池维护线程的最大数量 20 | */ 21 | private static final int SIZE_MAX_POOL = 10; 22 | /** 23 | * 线程池维护线程所允许的空闲时间 24 | */ 25 | private static final long ALIVE_TIME = 2000; 26 | 27 | private static ThreadPoolExecutor pool = new ThreadPoolExecutor(SIZE_CORE_POOL, SIZE_MAX_POOL, ALIVE_TIME, TimeUnit.MILLISECONDS, bqueue, new ThreadPoolExecutor.CallerRunsPolicy()); 28 | 29 | static { 30 | 31 | pool.prestartAllCoreThreads(); 32 | } 33 | 34 | public static ThreadPoolExecutor getPool() { 35 | return pool; 36 | } 37 | 38 | public static void main(String[] args) { 39 | System.out.println(pool.getPoolSize()); 40 | } 41 | } -------------------------------------------------------------------------------- /src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | #开发环境 2 | server: 3 | port: 80 4 | spring: 5 | servlet: 6 | multipart: 7 | max-file-size: 5MB 8 | max-request-size: 100MB 9 | datasource: 10 | driver-class-name: com.mysql.jdbc.Driver 11 | url: jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=Asia/Shanghai 12 | username: root 13 | password: 1172597631 14 | hikari: 15 | # 最小连接数 16 | minimum-idle: 5 17 | # 最大连接数 18 | maximum-pool-size: 15 19 | # 自动提交 20 | auto-commit: true 21 | # 一个连接idle状态的最大时长(毫秒),超时则被释放(retired),默认:10分钟 22 | idle-timeout: 600000 23 | # 连接池名字 24 | pool-name: BlogHikariCP 25 | # 一个连接的生命时长(毫秒),超时而且没被使用则被释放(retired),默认:30分钟 1800000ms,建议设置比数据库超时时长少60秒,参考MySQL wait_timeout参数(show variables like '%timeout%';) --> 26 | max-lifetime: 28740000 27 | connection-test-query: SELECT 1 28 | redis: 29 | database: 6 #Redis索引0~15,默认为0 30 | host: 127.0.0.1 31 | port: 6379 32 | password: #密码(默认为空) 33 | lettuce: # 这里标明使用lettuce配置 34 | pool: 35 | max-active: 8 #连接池最大连接数(使用负值表示没有限制) 36 | max-wait: -1ms #连接池最大阻塞等待时间(使用负值表示没有限制) 37 | max-idle: 5 #连接池中的最大空闲连接 38 | min-idle: 0 #连接池中的最小空闲连接 39 | timeout: 10000ms #连接超时时间(毫秒) 40 | logging: 41 | level: 42 | root: info 43 | com.zx: debug 44 | file: 45 | path: log/blog-dev 46 | rsa: 47 | key: 48 | priKeyFile: static/rsa/rsa_private_key.pem 49 | pubKeyFile: static/rsa/rsa_public_key.pem 50 | expire: 30 #分钟 51 | cooikeName: Blog_Token 52 | # mybatis config 53 | mybatis: 54 | mapper-locations: classpath*:/mapper/**Mapper.xml 55 | type-aliases-package: com.zx.blog.entity 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | thymeleaf: 3 | mode: HTML 4 | profiles: 5 | active: pro -------------------------------------------------------------------------------- /src/main/resources/logback-spring.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | ${FILE_LOG_PATTERN} 13 | 14 | ${LOG_FILE} 15 | 16 | ${LOG_FILE}.%d{yyyy-MM-dd}.%i 17 | 18 | 30 19 | 22 | 23 | 10MB 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/resources/mapper/LinkMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 19 | 20 | 23 | 24 | 28 | 29 | 30 | insert into t_link (link_name,link_url,link_rank,create_time,update_time,is_deleted) 31 | values (#{linkName},#{linkUrl},#{linkRank},#{createTime},#{updateTime},#{isDeleted}) 32 | 33 | 34 | 35 | update t_link set 36 | 37 | link_name = #{linkName}, 38 | 39 | 40 | link_url = #{linkUrl}, 41 | 42 | 43 | link_rank = #{linkRank}, 44 | 45 | 46 | update_time = #{updateTime}, 47 | 48 | 49 | is_deleted = #{isDeleted} 50 | 51 | where id = #{id}; 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/main/resources/mapper/SysLogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 21 | 22 | 23 | insert into t_syslog(t_syslog.create_by,t_syslog.create_time,t_syslog.update_by,t_syslog.update_time,t_syslog.cost_time,t_syslog.ip, 24 | t_syslog.name,t_syslog.request_param,t_syslog.request_type,t_syslog.request_url,t_syslog.username) 25 | values(#{createBy},#{createTime},#{updateBy},#{updateTime},#{costTime},#{ip},#{name},#{requestParam},#{requestType},#{requestUrl},#{username}) 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/main/resources/mapper/TagMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 15 | 16 | 17 | INSERT INTO t_tag(t_tag.id,t_tag.name,t_tag.state) VALUES(#{id},#{name},#{state}) 18 | 19 | 20 | 21 | delete from t_tag where id = #{id} 22 | 23 | 24 | 25 | 26 | update t_tag 27 | 28 | 29 | name = #{name}, 30 | 31 | 32 | state = #{state} 33 | 34 | 35 | where id = #{id} 36 | 37 | 38 | 39 | 40 | 43 | -------------------------------------------------------------------------------- /src/main/resources/mapper/TypeMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 12 | 15 | 16 | 19 | 20 | 21 | INSERT INTO t_type(t_type.id,t_type.name,t_type.state) VALUES(#{id},#{name},#{state}) 22 | 23 | 24 | 25 | delete from t_type where id = #{id} 26 | 27 | 28 | 29 | 30 | update t_type 31 | 32 | 33 | name = #{name}, 34 | 35 | 36 | state = #{state} 37 | 38 | 39 | where id = #{id} 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/main/resources/mapper/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 45 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/materialdesignicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/fonts/materialdesignicons.eot -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/materialdesignicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/fonts/materialdesignicons.ttf -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/materialdesignicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/fonts/materialdesignicons.woff -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/materialdesignicons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/fonts/materialdesignicons.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/captcha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/captcha.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/10.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/11.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/13.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/14.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/15.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/16.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/17.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/3.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/4.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/5.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/6.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/7.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/8.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/gallery/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/gallery/9.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/img-slide-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/img-slide-1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/img-slide-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/img-slide-2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/img-slide-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/img-slide-3.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/img-slide-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/img-slide-4.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/img-slide-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/img-slide-5.jpg -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/login-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/login-bg.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/logo-ico.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/logo-ico.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/logo-sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/logo-sidebar.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/images/logo.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["src/less/colorpicker.less"],"names":[],"mappings":";;;;;;;;AAqBA,wBACE,MAAA,MACA,OAAA,MAXA,iBAAsB,iDAatB,OAAA,UACA,MAAA,KACA,0BACE,QAAA,MACA,OAAA,IACA,MAAA,IACA,OAAA,IAAA,MAAA,KAfF,sBAAA,IACA,mBAAA,IACA,cAAA,IAeE,SAAA,SACA,IAAA,EACA,KAAA,EACA,OAAA,KAAA,EAAA,EAAA,KACA,4BACE,QAAA,MACA,OAAA,IACA,MAAA,IACA,OAAA,IAAA,MAAA,KAzBJ,sBAAA,IACA,mBAAA,IACA,cAAA,IA8BF,mBADA,iBAEE,MAAA,KACA,OAAA,MACA,MAAA,KACA,OAAA,WACA,YAAA,IACA,cAAA,IAIiB,qBADF,mBAEf,QAAA,MACA,OAAA,IACA,WAAA,KACA,WAAA,IAAA,MAAA,KACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,KACA,WAAA,KAGF,iBA1DE,iBAAsB,0CA8DxB,mBA9DE,iBAAsB,4CAgEtB,QAAA,KAKF,mBADA,iBADA,wBAGE,gBAAA,QAGF,aACE,QAAA,IACA,UAAA,MACA,WAAA,IAxEA,sBAAA,IACA,mBAAA,IACA,cAAA,IAwEA,QAAA,KAIU,mBADA,oBAEV,QAAA,MACA,QAAA,GACA,YAAA,EAGU,mBACV,MAAA,KAGU,oBACV,QAAA,GACA,QAAA,aACA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,KACA,oBAAA,eACA,SAAA,SACA,IAAA,KACA,KAAA,IAGU,mBACV,QAAA,GACA,QAAA,aACA,YAAA,IAAA,MAAA,YACA,aAAA,IAAA,MAAA,YACA,cAAA,IAAA,MAAA,KACA,SAAA,SACA,IAAA,KACA,KAAA,IAGW,iBACX,SAAA,SAGU,oCACV,UAAA,MAGkC,uDAClC,QAAA,MAGF,mBACE,OAAA,KACA,WAAA,IACA,MAAA,KAlIA,iBAAsB,4CAoItB,oBAAA,EAAA,KAGiB,uBACjB,OAAA,KAGF,uBACE,QAAA,KACA,OAAA,KACA,WAAA,IACA,MAAA,KAGqB,yBACrB,OAAA,QACA,MAAA,KACA,OAAA,KACA,MAAA,KAGuB,2BACvB,YAAA,IAI2B,+BADW,0CAEtC,QAAA,aACA,OAAA,QACA,OAAA,KACA,eAAA,SACA,MAAA,KAGU,gCACV,SAAA,SACA,QAAA,aACA,MAAA,KACA,QAAA,KAGU,oCACV,MAAA,MACA,UAAA,MACA,OAAA,KAGkC,4DAClC,cAAA,IAGkC,uDAClC,MAAA,MAIkC,uDADA,qDAElC,MAAA,MACA,OAAA,KACA,MAAA,KACA,OAAA,WACA,YAAA,EACA,cAAA,IAIqD,yDADF,uDAEnD,QAAA,MACA,OAAA,KACA,WAAA,KACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,MAAA,IACA,OAAA,KACA,WAAA,EAGkC,qDAlNlC,iBAAsB,qDAsNY,uDAtNlC,iBAAsB,uDA0NZ,gCACV,QAAA,KAGU,iCACV,QAAA,MAGiB,wCACjB,QAAA,aAGgB,0BAChB,KAAA,KACA,MAAA,IAGgB,yBAChB,KAAA,KACA,MAAA,IAGmB,6BACnB,aAAA,EACA,YAAA,EAGmB,4BACnB,aAAA,EACA,YAAA"} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/alpha.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/hue-horizontal.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/hue.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/js/bootstrap-colorpicker/img/bootstrap-colorpicker/saturation.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.ar.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ar={days:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت","الأحد"],daysShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد"],daysMin:["ح","ن","ث","ع","خ","ج","س","ح"],months:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthsShort:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],today:"هذا اليوم",rtl:!0}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.az.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.az={days:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],daysShort:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],daysMin:["B.","B.e","Ç.a","Ç.","C.a","C.","Ş."],months:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthsShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],today:"Bu gün",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.bg.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.bg={days:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],daysShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],daysMin:["Н","П","В","С","Ч","П","С"],months:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Ян","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Ное","Дек"],today:"днес"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.bs.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.bs={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.ca.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ca={days:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],daysShort:["Diu","Dil","Dmt","Dmc","Dij","Div","Dis"],daysMin:["dg","dl","dt","dc","dj","dv","ds"],months:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],monthsShort:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],today:"Avui",monthsTitle:"Mesos",clear:"Esborrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.cs.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.cs={days:["Neděle","Pondělí","Úterý","Středa","Čtvrtek","Pátek","Sobota"],daysShort:["Ned","Pon","Úte","Stř","Čtv","Pát","Sob"],daysMin:["Ne","Po","Út","St","Čt","Pá","So"],months:["Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec"],monthsShort:["Led","Úno","Bře","Dub","Kvě","Čer","Čnc","Srp","Zář","Říj","Lis","Pro"],today:"Dnes",clear:"Vymazat",weekStart:1,format:"dd.m.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.cy.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.cy={days:["Sul","Llun","Mawrth","Mercher","Iau","Gwener","Sadwrn"],daysShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],daysMin:["Su","Ll","Ma","Me","Ia","Gwe","Sa"],months:["Ionawr","Chewfror","Mawrth","Ebrill","Mai","Mehefin","Gorfennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthsShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tach","Rha"],today:"Heddiw"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.da.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.da={days:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],daysShort:["søn","man","tir","ons","tor","fre","lør"],daysMin:["sø","ma","ti","on","to","fr","lø"],months:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],monthsShort:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],today:"I Dag",clear:"Nulstil"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.de.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.de={days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],daysShort:["Son","Mon","Die","Mit","Don","Fre","Sam"],daysMin:["So","Mo","Di","Mi","Do","Fr","Sa"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthsShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],today:"Heute",monthsTitle:"Monate",clear:"Löschen",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.el.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.el={days:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],daysShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],daysMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],months:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthsShort:["Ιαν","Φεβ","Μαρ","Απρ","Μάι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],today:"Σήμερα",clear:"Καθαρισμός",weekStart:1,format:"d/m/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.en-AU.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["en-AU"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"d/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.en-GB.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["en-GB"]={days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",monthsTitle:"Months",clear:"Clear",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.eo.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.eo={days:["dimanĉo","lundo","mardo","merkredo","ĵaŭdo","vendredo","sabato"],daysShort:["dim.","lun.","mar.","mer.","ĵaŭ.","ven.","sam."],daysMin:["d","l","ma","me","ĵ","v","s"],months:["januaro","februaro","marto","aprilo","majo","junio","julio","aŭgusto","septembro","oktobro","novembro","decembro"],monthsShort:["jan.","feb.","mar.","apr.","majo","jun.","jul.","aŭg.","sep.","okt.","nov.","dec."],today:"Hodiaŭ",clear:"Nuligi",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.es.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.et.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.et={days:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],daysShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],daysMin:["P","E","T","K","N","R","L"],months:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthsShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],today:"Täna",clear:"Tühjenda",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.eu.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.eu={days:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],daysShort:["Ig","Al","Ar","Az","Og","Ol","Lr"],daysMin:["Ig","Al","Ar","Az","Og","Ol","Lr"],months:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],monthsShort:["Urt","Ots","Mar","Api","Mai","Eka","Uzt","Abu","Ira","Urr","Aza","Abe"],today:"Gaur"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.fa.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fa={days:["یک‌شنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنج‌شنبه","جمعه","شنبه","یک‌شنبه"],daysShort:["یک","دو","سه","چهار","پنج","جمعه","شنبه","یک"],daysMin:["ی","د","س","چ","پ","ج","ش","ی"],months:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthsShort:["ژان","فور","مار","آور","مه","ژون","ژوی","اوت","سپت","اکت","نوا","دسا"],today:"امروز",clear:"پاک کن",weekStart:1,format:"yyyy/mm/dd"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.fi.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fi={days:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"],daysShort:["sun","maa","tii","kes","tor","per","lau"],daysMin:["su","ma","ti","ke","to","pe","la"],months:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kesäkuu","heinäkuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"],monthsShort:["tam","hel","maa","huh","tou","kes","hei","elo","syy","lok","mar","jou"],today:"tänään",clear:"Tyhjennä",weekStart:1,format:"d.m.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.fo.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fo={days:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leygardagur"],daysShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],daysMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],months:["Januar","Februar","Marts","Apríl","Mei","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"Í Dag",clear:"Reinsa"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.fr-CH.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fr={days:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],daysShort:["Dim","Lun","Mar","Mer","Jeu","Ven","Sam"],daysMin:["D","L","Ma","Me","J","V","S"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],monthsShort:["Jan","Fév","Mar","Avr","Mai","Jui","Jul","Aou","Sep","Oct","Nov","Déc"],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.fr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.fr={days:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],daysShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],daysMin:["d","l","ma","me","j","v","s"],months:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthsShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],today:"Aujourd'hui",monthsTitle:"Mois",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.gl.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.gl={days:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],daysShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],daysMin:["Do","Lu","Ma","Me","Xo","Ve","Sa"],months:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthsShort:["Xan","Feb","Mar","Abr","Mai","Xun","Xul","Ago","Sep","Out","Nov","Dec"],today:"Hoxe",clear:"Limpar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.he.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.he={days:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת","ראשון"],daysShort:["א","ב","ג","ד","ה","ו","ש","א"],daysMin:["א","ב","ג","ד","ה","ו","ש","א"],months:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthsShort:["ינו","פבר","מרץ","אפר","מאי","יונ","יול","אוג","ספט","אוק","נוב","דצמ"],today:"היום",rtl:!0}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.hr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.hr={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthsShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],today:"Danas"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.hu.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.hu={days:["vasárnap","hétfő","kedd","szerda","csütörtök","péntek","szombat"],daysShort:["vas","hét","ked","sze","csü","pén","szo"],daysMin:["V","H","K","Sze","Cs","P","Szo"],months:["január","február","március","április","május","június","július","augusztus","szeptember","október","november","december"],monthsShort:["jan","feb","már","ápr","máj","jún","júl","aug","sze","okt","nov","dec"],today:"ma",weekStart:1,clear:"töröl",titleFormat:"yyyy. MM",format:"yyyy.mm.dd"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.hy.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.hy={days:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],daysShort:["Կրկ","Երկ","Երք","Չրք","Հնգ","Ուր","Շբթ"],daysMin:["Կրկ","Երկ","Երք","Չրք","Հնգ","Ուր","Շբթ"],months:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthsShort:["Հուն","Փետ","Մար","Ապր","Մայ","Հնս","Հլս","Օգս","Սեպ","Հոկ","Նմբ","Դեկ"],today:"Այսօր",clear:"Ջնջել",format:"dd.mm.yyyy",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.id.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.id={days:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],daysShort:["Mgu","Sen","Sel","Rab","Kam","Jum","Sab"],daysMin:["Mg","Sn","Sl","Ra","Ka","Ju","Sa"],months:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ags","Sep","Okt","Nov","Des"],today:"Hari Ini",clear:"Kosongkan"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.is.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.is={days:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],daysShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],daysMin:["Su","Má","Þr","Mi","Fi","Fö","La"],months:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],today:"Í Dag"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.it-CH.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",clear:"Cancella",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.it.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.it={days:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],daysShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],daysMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],months:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthsShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],today:"Oggi",monthsTitle:"Mesi",clear:"Cancella",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.ja.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ja={days:["日曜","月曜","火曜","水曜","木曜","金曜","土曜"],daysShort:["日","月","火","水","木","金","土"],daysMin:["日","月","火","水","木","金","土"],months:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",format:"yyyy/mm/dd",titleFormat:"yyyy年mm月",clear:"クリア"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.ka.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ka={days:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],daysShort:["კვი","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],daysMin:["კვ","ორ","სა","ოთ","ხუ","პა","შა"],months:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომები","ნოემბერი","დეკემბერი"],monthsShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],today:"დღეს",clear:"გასუფთავება",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.kh.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.kh={days:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍","អាទិត្យ"],daysShort:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],daysMin:["អា.ទិ","ចន្ទ","អង្គារ","ពុធ","ព្រ.ហ","សុក្រ","សៅរ៍","អា.ទិ"],months:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthsShort:["មករា","កុម្ភះ","មិនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],today:"ថ្ងៃនេះ",clear:"សំអាត"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.kk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.kk={days:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],daysShort:["Жек","Дүй","Сей","Сәр","Бей","Жұм","Сен"],daysMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],months:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthsShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],today:"Бүгін",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.ko.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ko={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],today:"오늘",clear:"삭제",format:"yyyy-mm-dd",titleFormat:"yyyy년mm월",weekStart:0}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.kr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.kr={days:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],daysShort:["일","월","화","수","목","금","토"],daysMin:["일","월","화","수","목","금","토"],months:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthsShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"]}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.lt.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.lt={days:["Sekmadienis","Pirmadienis","Antradienis","Trečiadienis","Ketvirtadienis","Penktadienis","Šeštadienis"],daysShort:["S","Pr","A","T","K","Pn","Š"],daysMin:["Sk","Pr","An","Tr","Ke","Pn","Št"],months:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthsShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],today:"Šiandien",monthsTitle:"Mėnesiai",clear:"Išvalyti",weekStart:1,format:"yyyy-mm-dd"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.lv.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.lv={days:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],daysShort:["Sv","P","O","T","C","Pk","S"],daysMin:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],months:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],today:"Šodien",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.me.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.me={days:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],daysMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,clear:"Izbriši",format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.mk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.mk={days:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],daysShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],daysMin:["Не","По","Вт","Ср","Че","Пе","Са"],months:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthsShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],today:"Денес",format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.mn.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.mn={days:["Ням","Даваа","Мягмар","Лхагва","Пүрэв","Баасан","Бямба"],daysShort:["Ням","Дав","Мяг","Лха","Пүр","Баа","Бям"],daysMin:["Ня","Да","Мя","Лх","Пү","Ба","Бя"],months:["Хулгана","Үхэр","Бар","Туулай","Луу","Могой","Морь","Хонь","Бич","Тахиа","Нохой","Гахай"],monthsShort:["Хул","Үхэ","Бар","Туу","Луу","Мог","Мор","Хон","Бич","Тах","Нох","Гах"],today:"Өнөөдөр",clear:"Тодорхой",format:"yyyy.mm.dd",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.ms.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ms={days:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],daysShort:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],daysMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],months:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthsShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],today:"Hari Ini",clear:"Bersihkan"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.nb.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.nb={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I Dag",format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.nl-BE.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["nl-BE"]={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Leegmaken",weekStart:1,format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.nl.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.nl={days:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],daysShort:["zo","ma","di","wo","do","vr","za"],daysMin:["zo","ma","di","wo","do","vr","za"],months:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthsShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],today:"Vandaag",monthsTitle:"Maanden",clear:"Wissen",weekStart:1,format:"dd-mm-yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.no.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.no={days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],daysShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],daysMin:["Sø","Ma","Ti","On","To","Fr","Lø"],months:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],monthsShort:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],today:"I dag",clear:"Nullstill",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.pl.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.pl={days:["niedziela","poniedziałek","wtorek","środa","czwartek","piątek","sobota"],daysShort:["niedz.","pon.","wt.","śr.","czw.","piąt.","sob."],daysMin:["ndz.","pn.","wt.","śr.","czw.","pt.","sob."],months:["styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],monthsShort:["sty.","lut.","mar.","kwi.","maj","cze.","lip.","sie.","wrz.","paź.","lis.","gru."],today:"dzisiaj",weekStart:1,clear:"wyczyść",format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.pt-BR.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["pt-BR"]={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.pt.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.pt={days:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],daysShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],daysMin:["Do","Se","Te","Qu","Qu","Se","Sa"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthsShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],today:"Hoje",monthsTitle:"Meses",clear:"Limpar",format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.ro.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ro={days:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],daysShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],daysMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],months:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthsShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],today:"Astăzi",clear:"Șterge",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.rs-latin.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["rs-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.rs.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.rs={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.ru.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.ru={days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вск","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",format:"dd.mm.yyyy",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.sk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sk={days:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],daysShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],daysMin:["Ne","Po","Ut","St","Št","Pia","So"],months:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],today:"Dnes",clear:"Vymazať",weekStart:1,format:"d.m.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.sl.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sl={days:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],daysShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],daysMin:["Ne","Po","To","Sr","Če","Pe","So"],months:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danes"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.sq.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sq={days:["E Diel","E Hënë","E Martē","E Mërkurë","E Enjte","E Premte","E Shtunë"],daysShort:["Die","Hën","Mar","Mër","Enj","Pre","Shtu"],daysMin:["Di","Hë","Ma","Më","En","Pr","Sht"],months:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthsShort:["Jan","Shk","Mar","Pri","Maj","Qer","Korr","Gu","Sht","Tet","Nën","Dhjet"],today:"Sot"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.sr-latin.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["sr-latin"]={days:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],daysShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],daysMin:["N","Po","U","Sr","Č","Pe","Su"],months:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],today:"Danas",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.sr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sr={days:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],daysShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],daysMin:["Н","По","У","Ср","Ч","Пе","Су"],months:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthsShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],today:"Данас",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.sv.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sv={days:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],daysShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],daysMin:["Sö","Må","Ti","On","To","Fr","Lö"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthsShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],today:"Idag",format:"yyyy-mm-dd",weekStart:1,clear:"Rensa"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.sw.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.sw={days:["Jumapili","Jumatatu","Jumanne","Jumatano","Alhamisi","Ijumaa","Jumamosi"],daysShort:["J2","J3","J4","J5","Alh","Ij","J1"],daysMin:["2","3","4","5","A","I","1"],months:["Januari","Februari","Machi","Aprili","Mei","Juni","Julai","Agosti","Septemba","Oktoba","Novemba","Desemba"],monthsShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ago","Sep","Okt","Nov","Des"],today:"Leo"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.th.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.th={days:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัส","ศุกร์","เสาร์","อาทิตย์"],daysShort:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],daysMin:["อา","จ","อ","พ","พฤ","ศ","ส","อา"],months:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthsShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],today:"วันนี้"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.tr.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.tr={days:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],daysShort:["Pz","Pzt","Sal","Çrş","Prş","Cu","Cts"],daysMin:["Pz","Pzt","Sa","Çr","Pr","Cu","Ct"],months:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthsShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],today:"Bugün",clear:"Temizle",weekStart:1,format:"dd.mm.yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.uk.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.uk={days:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"],daysShort:["Нед","Пнд","Втр","Срд","Чтв","Птн","Суб"],daysMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Cічень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthsShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],today:"Сьогодні",clear:"Очистити",format:"dd.mm.yyyy",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.vi.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates.vi={days:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"],daysShort:["CN","Thứ 2","Thứ 3","Thứ 4","Thứ 5","Thứ 6","Thứ 7"],daysMin:["CN","T2","T3","T4","T5","T6","T7"],months:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],monthsShort:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],today:"Hôm nay",clear:"Xóa",format:"dd/mm/yyyy"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-CN.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["zh-CN"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["周日","周一","周二","周三","周四","周五","周六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今日",clear:"清除",format:"yyyy年mm月dd日",titleFormat:"yyyy年mm月",weekStart:1}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datepicker/locales/bootstrap-datepicker.zh-TW.min.js: -------------------------------------------------------------------------------- 1 | !function(a){a.fn.datepicker.dates["zh-TW"]={days:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],daysShort:["週日","週一","週二","週三","週四","週五","週六"],daysMin:["日","一","二","三","四","五","六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthsShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],today:"今天",format:"yyyy年mm月dd日",weekStart:1,clear:"清除"}}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/ar-ma.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : Moroccan Arabic (ar-ma) 3 | //! author : ElFadili Yassine : https://github.com/ElFadiliY 4 | //! author : Abdel Said : https://github.com/abdelsaid 5 | 6 | (function (global, factory) { 7 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 8 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 9 | factory(global.moment) 10 | }(this, function (moment) { 'use strict'; 11 | 12 | 13 | var ar_ma = moment.defineLocale('ar-ma', { 14 | months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), 15 | monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'), 16 | weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 17 | weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'), 18 | weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'), 19 | longDateFormat : { 20 | LT : 'HH:mm', 21 | LTS : 'HH:mm:ss', 22 | L : 'DD/MM/YYYY', 23 | LL : 'D MMMM YYYY', 24 | LLL : 'D MMMM YYYY HH:mm', 25 | LLLL : 'dddd D MMMM YYYY HH:mm' 26 | }, 27 | calendar : { 28 | sameDay: '[اليوم على الساعة] LT', 29 | nextDay: '[غدا على الساعة] LT', 30 | nextWeek: 'dddd [على الساعة] LT', 31 | lastDay: '[أمس على الساعة] LT', 32 | lastWeek: 'dddd [على الساعة] LT', 33 | sameElse: 'L' 34 | }, 35 | relativeTime : { 36 | future : 'في %s', 37 | past : 'منذ %s', 38 | s : 'ثوان', 39 | m : 'دقيقة', 40 | mm : '%d دقائق', 41 | h : 'ساعة', 42 | hh : '%d ساعات', 43 | d : 'يوم', 44 | dd : '%d أيام', 45 | M : 'شهر', 46 | MM : '%d أشهر', 47 | y : 'سنة', 48 | yy : '%d سنوات' 49 | }, 50 | week : { 51 | dow : 6, // Saturday is the first day of the week. 52 | doy : 12 // The week that contains Jan 1st is the first week of the year. 53 | } 54 | }); 55 | 56 | return ar_ma; 57 | 58 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/ar-tn.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : Tunisian Arabic (ar-tn) 3 | 4 | (function (global, factory) { 5 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 6 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 7 | factory(global.moment) 8 | }(this, function (moment) { 'use strict'; 9 | 10 | 11 | var ar_tn = moment.defineLocale('ar-tn', { 12 | months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), 13 | monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'), 14 | weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'), 15 | weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'), 16 | weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'), 17 | longDateFormat: { 18 | LT: 'HH:mm', 19 | LTS: 'HH:mm:ss', 20 | L: 'DD/MM/YYYY', 21 | LL: 'D MMMM YYYY', 22 | LLL: 'D MMMM YYYY HH:mm', 23 | LLLL: 'dddd D MMMM YYYY HH:mm' 24 | }, 25 | calendar: { 26 | sameDay: '[اليوم على الساعة] LT', 27 | nextDay: '[غدا على الساعة] LT', 28 | nextWeek: 'dddd [على الساعة] LT', 29 | lastDay: '[أمس على الساعة] LT', 30 | lastWeek: 'dddd [على الساعة] LT', 31 | sameElse: 'L' 32 | }, 33 | relativeTime: { 34 | future: 'في %s', 35 | past: 'منذ %s', 36 | s: 'ثوان', 37 | m: 'دقيقة', 38 | mm: '%d دقائق', 39 | h: 'ساعة', 40 | hh: '%d ساعات', 41 | d: 'يوم', 42 | dd: '%d أيام', 43 | M: 'شهر', 44 | MM: '%d أشهر', 45 | y: 'سنة', 46 | yy: '%d سنوات' 47 | }, 48 | week: { 49 | dow: 1, // Monday is the first day of the week. 50 | doy: 4 // The week that contains Jan 4th is the first week of the year. 51 | } 52 | }); 53 | 54 | return ar_tn; 55 | 56 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/da.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : danish (da) 3 | //! author : Ulrik Nielsen : https://github.com/mrbase 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var da = moment.defineLocale('da', { 13 | months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'), 14 | monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), 15 | weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), 16 | weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'), 17 | weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'), 18 | longDateFormat : { 19 | LT : 'HH:mm', 20 | LTS : 'HH:mm:ss', 21 | L : 'DD/MM/YYYY', 22 | LL : 'D. MMMM YYYY', 23 | LLL : 'D. MMMM YYYY HH:mm', 24 | LLLL : 'dddd [d.] D. MMMM YYYY HH:mm' 25 | }, 26 | calendar : { 27 | sameDay : '[I dag kl.] LT', 28 | nextDay : '[I morgen kl.] LT', 29 | nextWeek : 'dddd [kl.] LT', 30 | lastDay : '[I går kl.] LT', 31 | lastWeek : '[sidste] dddd [kl] LT', 32 | sameElse : 'L' 33 | }, 34 | relativeTime : { 35 | future : 'om %s', 36 | past : '%s siden', 37 | s : 'få sekunder', 38 | m : 'et minut', 39 | mm : '%d minutter', 40 | h : 'en time', 41 | hh : '%d timer', 42 | d : 'en dag', 43 | dd : '%d dage', 44 | M : 'en måned', 45 | MM : '%d måneder', 46 | y : 'et år', 47 | yy : '%d år' 48 | }, 49 | ordinalParse: /\d{1,2}\./, 50 | ordinal : '%d.', 51 | week : { 52 | dow : 1, // Monday is the first day of the week. 53 | doy : 4 // The week that contains Jan 4th is the first week of the year. 54 | } 55 | }); 56 | 57 | return da; 58 | 59 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/fo.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : faroese (fo) 3 | //! author : Ragnar Johannesen : https://github.com/ragnar123 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var fo = moment.defineLocale('fo', { 13 | months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'), 14 | monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), 15 | weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'), 16 | weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'), 17 | weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'), 18 | longDateFormat : { 19 | LT : 'HH:mm', 20 | LTS : 'HH:mm:ss', 21 | L : 'DD/MM/YYYY', 22 | LL : 'D MMMM YYYY', 23 | LLL : 'D MMMM YYYY HH:mm', 24 | LLLL : 'dddd D. MMMM, YYYY HH:mm' 25 | }, 26 | calendar : { 27 | sameDay : '[Í dag kl.] LT', 28 | nextDay : '[Í morgin kl.] LT', 29 | nextWeek : 'dddd [kl.] LT', 30 | lastDay : '[Í gjár kl.] LT', 31 | lastWeek : '[síðstu] dddd [kl] LT', 32 | sameElse : 'L' 33 | }, 34 | relativeTime : { 35 | future : 'um %s', 36 | past : '%s síðani', 37 | s : 'fá sekund', 38 | m : 'ein minutt', 39 | mm : '%d minuttir', 40 | h : 'ein tími', 41 | hh : '%d tímar', 42 | d : 'ein dagur', 43 | dd : '%d dagar', 44 | M : 'ein mánaði', 45 | MM : '%d mánaðir', 46 | y : 'eitt ár', 47 | yy : '%d ár' 48 | }, 49 | ordinalParse: /\d{1,2}\./, 50 | ordinal : '%d.', 51 | week : { 52 | dow : 1, // Monday is the first day of the week. 53 | doy : 4 // The week that contains Jan 4th is the first week of the year. 54 | } 55 | }); 56 | 57 | return fo; 58 | 59 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/fr-ca.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : canadian french (fr-ca) 3 | //! author : Jonathan Abourbih : https://github.com/jonbca 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var fr_ca = moment.defineLocale('fr-ca', { 13 | months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'), 14 | monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'), 15 | weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), 16 | weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), 17 | weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'), 18 | longDateFormat : { 19 | LT : 'HH:mm', 20 | LTS : 'HH:mm:ss', 21 | L : 'YYYY-MM-DD', 22 | LL : 'D MMMM YYYY', 23 | LLL : 'D MMMM YYYY HH:mm', 24 | LLLL : 'dddd D MMMM YYYY HH:mm' 25 | }, 26 | calendar : { 27 | sameDay: '[Aujourd\'hui à] LT', 28 | nextDay: '[Demain à] LT', 29 | nextWeek: 'dddd [à] LT', 30 | lastDay: '[Hier à] LT', 31 | lastWeek: 'dddd [dernier à] LT', 32 | sameElse: 'L' 33 | }, 34 | relativeTime : { 35 | future : 'dans %s', 36 | past : 'il y a %s', 37 | s : 'quelques secondes', 38 | m : 'une minute', 39 | mm : '%d minutes', 40 | h : 'une heure', 41 | hh : '%d heures', 42 | d : 'un jour', 43 | dd : '%d jours', 44 | M : 'un mois', 45 | MM : '%d mois', 46 | y : 'un an', 47 | yy : '%d ans' 48 | }, 49 | ordinalParse: /\d{1,2}(er|e)/, 50 | ordinal : function (number) { 51 | return number + (number === 1 ? 'er' : 'e'); 52 | } 53 | }); 54 | 55 | return fr_ca; 56 | 57 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/ja.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : japanese (ja) 3 | //! author : LI Long : https://github.com/baryon 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var ja = moment.defineLocale('ja', { 13 | months : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), 14 | monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'), 15 | weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'), 16 | weekdaysShort : '日_月_火_水_木_金_土'.split('_'), 17 | weekdaysMin : '日_月_火_水_木_金_土'.split('_'), 18 | longDateFormat : { 19 | LT : 'Ah時m分', 20 | LTS : 'Ah時m分s秒', 21 | L : 'YYYY/MM/DD', 22 | LL : 'YYYY年M月D日', 23 | LLL : 'YYYY年M月D日Ah時m分', 24 | LLLL : 'YYYY年M月D日Ah時m分 dddd' 25 | }, 26 | meridiemParse: /午前|午後/i, 27 | isPM : function (input) { 28 | return input === '午後'; 29 | }, 30 | meridiem : function (hour, minute, isLower) { 31 | if (hour < 12) { 32 | return '午前'; 33 | } else { 34 | return '午後'; 35 | } 36 | }, 37 | calendar : { 38 | sameDay : '[今日] LT', 39 | nextDay : '[明日] LT', 40 | nextWeek : '[来週]dddd LT', 41 | lastDay : '[昨日] LT', 42 | lastWeek : '[前週]dddd LT', 43 | sameElse : 'L' 44 | }, 45 | relativeTime : { 46 | future : '%s後', 47 | past : '%s前', 48 | s : '数秒', 49 | m : '1分', 50 | mm : '%d分', 51 | h : '1時間', 52 | hh : '%d時間', 53 | d : '1日', 54 | dd : '%d日', 55 | M : '1ヶ月', 56 | MM : '%dヶ月', 57 | y : '1年', 58 | yy : '%d年' 59 | } 60 | }); 61 | 62 | return ja; 63 | 64 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/km.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : khmer (km) 3 | //! author : Kruy Vanna : https://github.com/kruyvanna 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var km = moment.defineLocale('km', { 13 | months: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), 14 | monthsShort: 'មករា_កុម្ភៈ_មិនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'), 15 | weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), 16 | weekdaysShort: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), 17 | weekdaysMin: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'), 18 | longDateFormat: { 19 | LT: 'HH:mm', 20 | LTS : 'HH:mm:ss', 21 | L: 'DD/MM/YYYY', 22 | LL: 'D MMMM YYYY', 23 | LLL: 'D MMMM YYYY HH:mm', 24 | LLLL: 'dddd, D MMMM YYYY HH:mm' 25 | }, 26 | calendar: { 27 | sameDay: '[ថ្ងៃនៈ ម៉ោង] LT', 28 | nextDay: '[ស្អែក ម៉ោង] LT', 29 | nextWeek: 'dddd [ម៉ោង] LT', 30 | lastDay: '[ម្សិលមិញ ម៉ោង] LT', 31 | lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT', 32 | sameElse: 'L' 33 | }, 34 | relativeTime: { 35 | future: '%sទៀត', 36 | past: '%sមុន', 37 | s: 'ប៉ុន្មានវិនាទី', 38 | m: 'មួយនាទី', 39 | mm: '%d នាទី', 40 | h: 'មួយម៉ោង', 41 | hh: '%d ម៉ោង', 42 | d: 'មួយថ្ងៃ', 43 | dd: '%d ថ្ងៃ', 44 | M: 'មួយខែ', 45 | MM: '%d ខែ', 46 | y: 'មួយឆ្នាំ', 47 | yy: '%d ឆ្នាំ' 48 | }, 49 | week: { 50 | dow: 1, // Monday is the first day of the week. 51 | doy: 4 // The week that contains Jan 4th is the first week of the year. 52 | } 53 | }); 54 | 55 | return km; 56 | 57 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/ko.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : korean (ko) 3 | //! 4 | //! authors 5 | //! 6 | //! - Kyungwook, Park : https://github.com/kyungw00k 7 | //! - Jeeeyul Lee 8 | 9 | (function (global, factory) { 10 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 11 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 12 | factory(global.moment) 13 | }(this, function (moment) { 'use strict'; 14 | 15 | 16 | var ko = moment.defineLocale('ko', { 17 | months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), 18 | monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'), 19 | weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'), 20 | weekdaysShort : '일_월_화_수_목_금_토'.split('_'), 21 | weekdaysMin : '일_월_화_수_목_금_토'.split('_'), 22 | longDateFormat : { 23 | LT : 'A h시 m분', 24 | LTS : 'A h시 m분 s초', 25 | L : 'YYYY.MM.DD', 26 | LL : 'YYYY년 MMMM D일', 27 | LLL : 'YYYY년 MMMM D일 A h시 m분', 28 | LLLL : 'YYYY년 MMMM D일 dddd A h시 m분' 29 | }, 30 | calendar : { 31 | sameDay : '오늘 LT', 32 | nextDay : '내일 LT', 33 | nextWeek : 'dddd LT', 34 | lastDay : '어제 LT', 35 | lastWeek : '지난주 dddd LT', 36 | sameElse : 'L' 37 | }, 38 | relativeTime : { 39 | future : '%s 후', 40 | past : '%s 전', 41 | s : '몇초', 42 | ss : '%d초', 43 | m : '일분', 44 | mm : '%d분', 45 | h : '한시간', 46 | hh : '%d시간', 47 | d : '하루', 48 | dd : '%d일', 49 | M : '한달', 50 | MM : '%d달', 51 | y : '일년', 52 | yy : '%d년' 53 | }, 54 | ordinalParse : /\d{1,2}일/, 55 | ordinal : '%d일', 56 | meridiemParse : /오전|오후/, 57 | isPM : function (token) { 58 | return token === '오후'; 59 | }, 60 | meridiem : function (hour, minute, isUpper) { 61 | return hour < 12 ? '오전' : '오후'; 62 | } 63 | }); 64 | 65 | return ko; 66 | 67 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/nn.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : norwegian nynorsk (nn) 3 | //! author : https://github.com/mechuwind 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var nn = moment.defineLocale('nn', { 13 | months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'), 14 | monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), 15 | weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), 16 | weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'), 17 | weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'), 18 | longDateFormat : { 19 | LT : 'HH:mm', 20 | LTS : 'HH:mm:ss', 21 | L : 'DD.MM.YYYY', 22 | LL : 'D MMMM YYYY', 23 | LLL : 'D MMMM YYYY HH:mm', 24 | LLLL : 'dddd D MMMM YYYY HH:mm' 25 | }, 26 | calendar : { 27 | sameDay: '[I dag klokka] LT', 28 | nextDay: '[I morgon klokka] LT', 29 | nextWeek: 'dddd [klokka] LT', 30 | lastDay: '[I går klokka] LT', 31 | lastWeek: '[Føregåande] dddd [klokka] LT', 32 | sameElse: 'L' 33 | }, 34 | relativeTime : { 35 | future : 'om %s', 36 | past : 'for %s sidan', 37 | s : 'nokre sekund', 38 | m : 'eit minutt', 39 | mm : '%d minutt', 40 | h : 'ein time', 41 | hh : '%d timar', 42 | d : 'ein dag', 43 | dd : '%d dagar', 44 | M : 'ein månad', 45 | MM : '%d månader', 46 | y : 'eit år', 47 | yy : '%d år' 48 | }, 49 | ordinalParse: /\d{1,2}\./, 50 | ordinal : '%d.', 51 | week : { 52 | dow : 1, // Monday is the first day of the week. 53 | doy : 4 // The week that contains Jan 4th is the first week of the year. 54 | } 55 | }); 56 | 57 | return nn; 58 | 59 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/tzm-latn.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : Morocco Central Atlas Tamaziɣt in Latin (tzm-latn) 3 | //! author : Abdel Said : https://github.com/abdelsaid 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var tzm_latn = moment.defineLocale('tzm-latn', { 13 | months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), 14 | monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'), 15 | weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), 16 | weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), 17 | weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'), 18 | longDateFormat : { 19 | LT : 'HH:mm', 20 | LTS : 'HH:mm:ss', 21 | L : 'DD/MM/YYYY', 22 | LL : 'D MMMM YYYY', 23 | LLL : 'D MMMM YYYY HH:mm', 24 | LLLL : 'dddd D MMMM YYYY HH:mm' 25 | }, 26 | calendar : { 27 | sameDay: '[asdkh g] LT', 28 | nextDay: '[aska g] LT', 29 | nextWeek: 'dddd [g] LT', 30 | lastDay: '[assant g] LT', 31 | lastWeek: 'dddd [g] LT', 32 | sameElse: 'L' 33 | }, 34 | relativeTime : { 35 | future : 'dadkh s yan %s', 36 | past : 'yan %s', 37 | s : 'imik', 38 | m : 'minuḍ', 39 | mm : '%d minuḍ', 40 | h : 'saɛa', 41 | hh : '%d tassaɛin', 42 | d : 'ass', 43 | dd : '%d ossan', 44 | M : 'ayowr', 45 | MM : '%d iyyirn', 46 | y : 'asgas', 47 | yy : '%d isgasn' 48 | }, 49 | week : { 50 | dow : 6, // Saturday is the first day of the week. 51 | doy : 12 // The week that contains Jan 1st is the first week of the year. 52 | } 53 | }); 54 | 55 | return tzm_latn; 56 | 57 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/tzm.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : Morocco Central Atlas Tamaziɣt (tzm) 3 | //! author : Abdel Said : https://github.com/abdelsaid 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var tzm = moment.defineLocale('tzm', { 13 | months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), 14 | monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'), 15 | weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), 16 | weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), 17 | weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'), 18 | longDateFormat : { 19 | LT : 'HH:mm', 20 | LTS: 'HH:mm:ss', 21 | L : 'DD/MM/YYYY', 22 | LL : 'D MMMM YYYY', 23 | LLL : 'D MMMM YYYY HH:mm', 24 | LLLL : 'dddd D MMMM YYYY HH:mm' 25 | }, 26 | calendar : { 27 | sameDay: '[ⴰⵙⴷⵅ ⴴ] LT', 28 | nextDay: '[ⴰⵙⴽⴰ ⴴ] LT', 29 | nextWeek: 'dddd [ⴴ] LT', 30 | lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT', 31 | lastWeek: 'dddd [ⴴ] LT', 32 | sameElse: 'L' 33 | }, 34 | relativeTime : { 35 | future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s', 36 | past : 'ⵢⴰⵏ %s', 37 | s : 'ⵉⵎⵉⴽ', 38 | m : 'ⵎⵉⵏⵓⴺ', 39 | mm : '%d ⵎⵉⵏⵓⴺ', 40 | h : 'ⵙⴰⵄⴰ', 41 | hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ', 42 | d : 'ⴰⵙⵙ', 43 | dd : '%d oⵙⵙⴰⵏ', 44 | M : 'ⴰⵢoⵓⵔ', 45 | MM : '%d ⵉⵢⵢⵉⵔⵏ', 46 | y : 'ⴰⵙⴳⴰⵙ', 47 | yy : '%d ⵉⵙⴳⴰⵙⵏ' 48 | }, 49 | week : { 50 | dow : 6, // Saturday is the first day of the week. 51 | doy : 12 // The week that contains Jan 1st is the first week of the year. 52 | } 53 | }); 54 | 55 | return tzm; 56 | 57 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-datetimepicker/locale/uz.js: -------------------------------------------------------------------------------- 1 | //! moment.js locale configuration 2 | //! locale : uzbek (uz) 3 | //! author : Sardor Muminov : https://github.com/muminoff 4 | 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) : 7 | typeof define === 'function' && define.amd ? define(['moment'], factory) : 8 | factory(global.moment) 9 | }(this, function (moment) { 'use strict'; 10 | 11 | 12 | var uz = moment.defineLocale('uz', { 13 | months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'), 14 | monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'), 15 | weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'), 16 | weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'), 17 | weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'), 18 | longDateFormat : { 19 | LT : 'HH:mm', 20 | LTS : 'HH:mm:ss', 21 | L : 'DD/MM/YYYY', 22 | LL : 'D MMMM YYYY', 23 | LLL : 'D MMMM YYYY HH:mm', 24 | LLLL : 'D MMMM YYYY, dddd HH:mm' 25 | }, 26 | calendar : { 27 | sameDay : '[Бугун соат] LT [да]', 28 | nextDay : '[Эртага] LT [да]', 29 | nextWeek : 'dddd [куни соат] LT [да]', 30 | lastDay : '[Кеча соат] LT [да]', 31 | lastWeek : '[Утган] dddd [куни соат] LT [да]', 32 | sameElse : 'L' 33 | }, 34 | relativeTime : { 35 | future : 'Якин %s ичида', 36 | past : 'Бир неча %s олдин', 37 | s : 'фурсат', 38 | m : 'бир дакика', 39 | mm : '%d дакика', 40 | h : 'бир соат', 41 | hh : '%d соат', 42 | d : 'бир кун', 43 | dd : '%d кун', 44 | M : 'бир ой', 45 | MM : '%d ой', 46 | y : 'бир йил', 47 | yy : '%d йил' 48 | }, 49 | week : { 50 | dow : 1, // Monday is the first day of the week. 51 | doy : 7 // The week that contains Jan 4th is the first week of the year. 52 | } 53 | }); 54 | 55 | return uz; 56 | 57 | })); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/bootstrap-table-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTableZhCN={exports:{}}.exports}})(this,function(){'use strict';(function(a){a.fn.bootstrapTable.locales['zh-CN']={formatLoadingMessage:function(){return'\u6B63\u5728\u52AA\u529B\u5730\u52A0\u8F7D\u6570\u636E\u4E2D\uFF0C\u8BF7\u7A0D\u5019'},formatRecordsPerPage:function(a){return'\u6BCF\u9875\u663E\u793A '+a+' \u6761\u8BB0\u5F55'},formatShowingRows:function(a,b,c){return'\u663E\u793A\u7B2C '+a+' \u5230\u7B2C '+b+' \u6761\u8BB0\u5F55\uFF0C\u603B\u5171 '+c+' \u6761\u8BB0\u5F55'},formatDetailPagination:function(a){return'\u603B\u5171 '+a+' \u6761\u8BB0\u5F55'},formatSearch:function(){return'\u641C\u7D22'},formatNoMatches:function(){return'\u6CA1\u6709\u627E\u5230\u5339\u914D\u7684\u8BB0\u5F55'},formatPaginationSwitch:function(){return'\u9690\u85CF/\u663E\u793A\u5206\u9875'},formatRefresh:function(){return'\u5237\u65B0'},formatToggle:function(){return'\u5207\u6362'},formatColumns:function(){return'\u5217'},formatFullscreen:function(){return'\u5168\u5C4F'},formatAllRows:function(){return'\u6240\u6709'},formatAutoRefresh:function(){return'\u81EA\u52A8\u5237\u65B0'},formatExport:function(){return'\u5BFC\u51FA\u6570\u636E'},formatClearFilters:function(){return'\u6E05\u7A7A\u8FC7\u6EE4'},formatJumpto:function(){return'\u8DF3\u8F6C'},formatAdvancedSearch:function(){return'\u9AD8\u7EA7\u641C\u7D22'},formatAdvancedCloseButton:function(){return'\u5173\u95ED'}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales['zh-CN'])})(jQuery)}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/defer-url/bootstrap-table-defer-url.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTableDeferUrl={exports:{}}.exports}})(this,function(){'use strict';(function(a){a.extend(a.fn.bootstrapTable.defaults,{deferUrl:void 0});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.init;b.prototype.init=function(){c.apply(this,Array.prototype.slice.apply(arguments)),this.options.deferUrl&&(this.options.url=this.options.deferUrl)}})(jQuery)}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/filter-control/bootstrap-table-filter-control.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .no-filter-control{height:34px}.filter-control{margin:0 2px 2px 2px} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/fixed-columns/bootstrap-table-fixed-columns.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .fixed-table-header-columns,.fixed-table-body-columns{position:absolute;background-color:#fff;box-sizing:border-box;overflow:hidden;z-index:1}.fixed-table-header-columns{z-index:2}.fixed-table-header-columns .table,.fixed-table-body-columns .table{border-right:1px solid #ddd}.fixed-table-header-columns .table.table-no-bordered,.fixed-table-body-columns .table.table-no-bordered{border-right:1px solid transparent}.fixed-table-body-columns table{position:absolute;animation:none} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/group-by-v2/bootstrap-table-group-by.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .bootstrap-table .table>tbody>tr.groupBy{cursor:pointer}.bootstrap-table .table>tbody>tr.hidden+tr.detail-view{display:none} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/i18n-enhance/bootstrap-table-i18n-enhance.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTableI18nEnhance={exports:{}}.exports}})(this,function(){'use strict';!function(a){var b=a.fn.bootstrapTable.Constructor;b.prototype.changeTitle=function(b){a.each(this.options.columns,function(c,d){a.each(d,function(a,c){c.field&&(c.title=b[c.field])})}),this.initHeader(),this.initBody(),this.initToolbar()},b.prototype.changeLocale=function(a){this.options.locale=a,this.initLocale(),this.initPagination(),this.initBody(),this.initToolbar()},a.fn.bootstrapTable.methods.push('changeTitle'),a.fn.bootstrapTable.methods.push('changeLocale')}(jQuery)}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/key-events/bootstrap-table-key-events.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTableKeyEvents={exports:{}}.exports}})(this,function(){'use strict';!function(a){a.extend(a.fn.bootstrapTable.defaults,{keyEvents:!1});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.init;b.prototype.init=function(){c.apply(this,Array.prototype.slice.apply(arguments)),this.initKeyEvents()},b.prototype.initKeyEvents=function(){if(this.options.keyEvents){var b=this;a(document).off('keydown').on('keydown',function(c){var d=b.$toolbar.find('.search input'),e=b.$toolbar.find('button[name="refresh"]'),f=b.$toolbar.find('button[name="toggle"]'),g=b.$toolbar.find('button[name="paginationSwitch"]');if(document.activeElement===d.get(0)||!a.contains(document.activeElement,b.$toolbar.get(0)))return!0;switch(c.keyCode){case 83:return b.options.search?(d.focus(),!1):void 0;case 82:return b.options.showRefresh?(e.click(),!1):void 0;case 84:return b.options.showToggle?(f.click(),!1):void 0;case 80:return b.options.showPaginationSwitch?(g.click(),!1):void 0;case 37:return b.options.pagination?(b.prevPage(),!1):void 0;case 39:return b.options.pagination?void b.nextPage():void 0;}})}}}(jQuery)}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTableMobile={exports:{}}.exports}})(this,function(){'use strict';!function(a){var b=function(b,c){0a.options.minWidth&&d>a.options.minHeight&&f(a):b<=a.options.minWidth?e(a):b>a.options.minWidth&&f(a),c(a)},e=function(a){g(a,!1),b(a,!1)},f=function(a){g(a,!0),b(a,!0)},g=function(a,b){a.options.cardView=b,a.toggleView()},h=function(a,b){var c;return function(){var d=this,e=arguments;clearTimeout(c),c=setTimeout(function later(){c=null,a.apply(d,e)},b)}};a.extend(a.fn.bootstrapTable.defaults,{mobileResponsive:!1,minWidth:562,minHeight:void 0,heightThreshold:100,checkOnInit:!0,columnsHidden:[]});var i=a.fn.bootstrapTable.Constructor,j=i.prototype.init;i.prototype.init=function(){if((j.apply(this,Array.prototype.slice.apply(arguments)),!!this.options.mobileResponsive)&&this.options.minWidth){100>this.options.minWidth&&this.options.resizable&&(console.log('The minWidth when the resizable extension is active should be greater or equal than 100'),this.options.minWidth=100);var b=this,c={width:a(window).width(),height:a(window).height()};if(a(window).on('resize orientationchange',h(function(){var e=a(this).height(),f=a(this).width();(Math.abs(c.height-e)>b.options.heightThreshold||c.width!=f)&&(d(b,f,e),c={width:f,height:e})},200)),this.options.checkOnInit){var e=a(window).height(),f=a(window).width();d(this,f,e),c={width:f,height:e}}}}}(jQuery)}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/multiple-search/bootstrap-table-multiple-search.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTableMultipleSearch={exports:{}}.exports}})(this,function(){'use strict';!function(a){a.extend(a.fn.bootstrapTable.defaults,{multipleSearch:!1,delimeter:' '});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.initSearch;b.prototype.initSearch=function(){if(this.options.multipleSearch){if(this.searchText===void 0)return;var b=this.searchText.split(this.options.delimeter),d=this,e=a.isEmptyObject(this.filterColumns)?null:this.filterColumns,f=[];if(1===b.length)c.apply(this,Array.prototype.slice.apply(arguments));else{for(var g,h=0;h (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .multiple-select-row-selected{background:lightBlue}.table tbody tr:hover td,.table tbody tr:hover th{background-color:transparent}.table-striped tbody tr:nth-child(odd):hover td{background-color:#f9f9f9}.fixed-table-container tbody .selected td{background:lightBlue} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/natural-sorting/bootstrap-table-natural-sorting.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.bootstrapTableNaturalSorting={exports:{}}.exports}})(this,function(){"use strict"}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/page-jump-to/bootstrap-table-page-jump-to.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .jumpto input{height:31px;width:50px;margin-left:5px;margin-right:5px;text-align:center;display:inline-block} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/page-jump-to/bootstrap-table-page-jump-to.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTablePageJumpTo={exports:{}}.exports}})(this,function(){'use strict';(function(a){var b=a.fn.bootstrapTable.utils.sprintf;a.extend(a.fn.bootstrapTable.defaults,{showJumpto:!1,exportOptions:{}}),a.extend(a.fn.bootstrapTable.locales,{formatJumpto:function(){return'GO'}}),a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales);var c=a.fn.bootstrapTable.Constructor,d=c.prototype.initPagination;c.prototype.initPagination=function(){if(d.apply(this,Array.prototype.slice.apply(arguments)),this.options.showJumpto){var c=this,e=this.$pagination.find('ul.pagination'),f=e.find('li.jumpto');f.length||(f=a(['
  • ','','','
  • '].join('')).appendTo(e),f.find('button').click(function(){c.selectPage(parseInt(f.find('input').val()))}))}}})(jQuery)}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .reorder_rows_onDragClass td{background-color:#eee;-webkit-box-shadow:11px 5px 12px 2px #333,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-webkit-box-shadow:6px 3px 5px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-moz-box-shadow:6px 4px 5px 1px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-box-shadow:6px 4px 5px 1px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset}.reorder_rows_onDragClass td:last-child{-webkit-box-shadow:8px 7px 12px 0 #333,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-webkit-box-shadow:1px 8px 6px -4px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset;-moz-box-shadow:0 9px 4px -4px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset,-1px 0 0 #ccc inset;-box-shadow:0 9px 4px -4px #555,0 1px 0 #ccc inset,0 -1px 0 #ccc inset,-1px 0 0 #ccc inset} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTableReorderRows={exports:{}}.exports}})(this,function(){'use strict';(function(a){var b=function(a,b){return{id:'customId_'+b}};a.extend(a.fn.bootstrapTable.defaults,{reorderableRows:!1,onDragStyle:null,onDropStyle:null,onDragClass:'reorder_rows_onDragClass',dragHandle:null,useRowAttrFunc:!1,onReorderRowsDrag:function(){return!1},onReorderRowsDrop:function(){return!1},onReorderRow:function(){return!1}}),a.extend(a.fn.bootstrapTable.Constructor.EVENTS,{"reorder-row.bs.table":'onReorderRow'});var c=a.fn.bootstrapTable.Constructor,d=c.prototype.init,e=c.prototype.initSearch;c.prototype.init=function(){if(!this.options.reorderableRows)return void d.apply(this,Array.prototype.slice.apply(arguments));var a=this;this.options.useRowAttrFunc&&(this.options.rowAttributes=b);var c=this.options.onPostBody;this.options.onPostBody=function(){setTimeout(function(){a.makeRowsReorderable(),c.apply()},1)},d.apply(this,Array.prototype.slice.apply(arguments))},c.prototype.initSearch=function(){e.apply(this,Array.prototype.slice.apply(arguments));!this.options.reorderableRows},c.prototype.makeRowsReorderable=function(){if(!this.options.cardView){var a=this;this.$el.tableDnD({onDragStyle:a.options.onDragStyle,onDropStyle:a.options.onDropStyle,onDragClass:a.options.onDragClass,onDrop:a.onDrop,onDragStart:a.options.onReorderRowsDrag,dragHandle:a.options.dragHandle})}},c.prototype.onDrop=function(b,c){for(var d=a(b),e=d.data('bootstrap.table'),f=d.data('bootstrap.table').options,g=null,h=[],j=0;j (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if("function"==typeof define&&define.amd)define([],b);else if("undefined"!=typeof exports)b();else{b(),a.bootstrapTableResizable={exports:{}}.exports}})(this,function(){"use strict";(function(a){var b=function(a){!a.options.resizable||a.options.cardView||e(a)||a.$el.resizableColumns()},c=function(a){d(a),b(a)},d=function(a){e(a)&&a.$el.data("resizableColumns").destroy()},e=function(a){return a.$el.data("resizableColumns")!==void 0};a.extend(a.fn.bootstrapTable.defaults,{resizable:!1});var f=a.fn.bootstrapTable.Constructor,g=f.prototype.initBody,h=f.prototype.toggleView,i=f.prototype.resetView;f.prototype.initBody=function(){var a=this;g.apply(this,Array.prototype.slice.apply(arguments)),a.$el.off("column-switch.bs.table, page-change.bs.table").on("column-switch.bs.table, page-change.bs.table",function(){c(a)})},f.prototype.toggleView=function(){h.apply(this,Array.prototype.slice.apply(arguments)),this.options.resizable&&this.options.cardView&&d(this)},f.prototype.resetView=function(){var a=this;i.apply(this,Array.prototype.slice.apply(arguments)),this.options.resizable&&setTimeout(function(){b(a)},100)}})(jQuery)}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/sticky-header/bootstrap-table-sticky-header.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .fix-sticky{position:fixed!important;overflow:hidden;z-index:100}.fix-sticky table thead{background:#fff}.fix-sticky table thead.thead-light{background:#e9ecef}.fix-sticky table thead.thead-light{background:#212529} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/tree-column/bootstrap-table-tree-column.min.css: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | .table:not(.table-condensed)>tbody>tr>td.treenode{padding-top:0;padding-bottom:0;border-bottom:solid #fff 1px}.table:not(.table-condensed)>tbody>tr:last-child>td.treenode{border-bottom:0}.treenode .text{float:left;display:block;padding-top:6px;padding-bottom:6px}.treenode .vertical,.treenode .vertical.last{float:left;display:block;width:1px;border-left:dashed silver 1px;height:38px;margin-left:8px}.treenode .vertical.last{height:15px}.treenode .space,.treenode .node{float:left;display:block;width:15px;height:5px;margin-top:15px}.treenode .node{border-top:dashed silver 1px} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/bootstrap-table/extensions/treegrid/bootstrap-table-treegrid.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * bootstrap-table - An extended Bootstrap table with radio, checkbox, sort, pagination, and other added features. (supports twitter bootstrap v2 and v3). 3 | * 4 | * @version v1.14.2 5 | * @homepage https://bootstrap-table.com 6 | * @author wenzhixin (http://wenzhixin.net.cn/) 7 | * @license MIT 8 | */ 9 | 10 | (function(a,b){if('function'==typeof define&&define.amd)define([],b);else if('undefined'!=typeof exports)b();else{b(),a.bootstrapTableTreegrid={exports:{}}.exports}})(this,function(){'use strict';!function(a){a.extend(a.fn.bootstrapTable.defaults,{treeShowField:null,idField:'id',parentIdField:'pid',rootParentId:null,onGetNodes:function(b,c){var d=this,e=[];return a.each(c,function(a,c){b[d.options.idField]===c[d.options.parentIdField]&&e.push(c)}),e},onCheckRoot:function(a){var b=this;return b.options.rootParentId===a[b.options.parentIdField]||!a[b.options.parentIdField]}});var b=a.fn.bootstrapTable.Constructor,c=b.prototype.init,d=b.prototype.initRow,e=b.prototype.initHeader,f=null;b.prototype.init=function(){f=this.options.rowStyle,c.apply(this,Array.prototype.slice.apply(arguments))},b.prototype.initHeader=function(){var b=this;e.apply(b,Array.prototype.slice.apply(arguments));var c=b.options.treeShowField;c&&a.each(this.header.fields,function(a,d){if(c===d)return b.treeEnable=!0,!1})};var g=function(b,c,e,h){var j=this,k=j.options.onGetNodes.apply(j,[b,e]);b._nodes=k,h.append(d.apply(j,[b,c,e,h]));for(var l,m=k.length-1,n=0;n<=m;n++)l=k[n],l._level=b._level+1,l._parent=b,n===m&&(l._last=1),j.options.rowStyle=function(a){var b=f.apply(j,Array.prototype.slice.apply(arguments)),c=a[j.options.idField]?a[j.options.idField]:0,d=a[j.options.parentIdField]?a[j.options.parentIdField]:0;return b.classes=[b.classes||'','treegrid-'+c,'treegrid-parent-'+d].join(' '),b},g.apply(j,[l,a.inArray(l,e),e,h])};b.prototype.initRow=function(a,b,c,e){var h=this;return h.treeEnable?!!h.options.onCheckRoot.apply(h,[a,c])&&(void 0===a._level&&(a._level=0),h.options.rowStyle=function(a){var b=f.apply(h,Array.prototype.slice.apply(arguments)),c=a[h.options.idField]?a[h.options.idField]:0;return b.classes=[b.classes||'','treegrid-'+c].join(' '),b},g.apply(h,[a,b,c,e]),!0):d.apply(h,Array.prototype.slice.apply(arguments))}}(jQuery)}); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/jquery-tags-input/jquery.tagsinput.min.css: -------------------------------------------------------------------------------- 1 | div.tagsinput{border:1px solid #ebebeb;background:#FFF;padding:6px 12px 1px 6px;width:300px;height:100px;overflow-y:auto;}div.tagsinput span.tag{border:none;-moz-border-radius:2px;-webkit-border-radius:2px;display:block;float:left;padding:2px 5px;text-decoration:none;background:#33cabb;color:#fff;margin-right:5px;margin-bottom:5px;font-family:'Microsoft yahei',Roboto,sans-serif;font-size:13px;line-height:18px}div.tagsinput span.tag a{font-weight:bold;color:rgba(255,255,255,0.5);text-decoration:none;font-size:12px;}div.tagsinput input{width:80px;margin:0px;font-family:'Microsoft yahei',Roboto,sans-serif;font-size:13px;border:1px solid transparent;padding:0;background:transparent;color:#000;outline:0px;margin-right:5px;margin-bottom:5px;}div.tagsinput div{display:block;float:left;}.tags_clear{clear:both;width:100%;height:0px;}.not_valid{background:#FBD8DB !important;color:#90111A !important;} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/jquery-treegrid/jquery.treegrid.min.css: -------------------------------------------------------------------------------- 1 | .treegrid-indent{width:16px;height:16px;display:inline-block;position:relative}.treegrid-expander{width:16px;height:16px;display:inline-block;position:relative;cursor:pointer} -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/x-editable/1.5.1/bootstrap3-editable/img/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/js/x-editable/1.5.1/bootstrap3-editable/img/clear.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/x-editable/1.5.1/bootstrap3-editable/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/admin/js/x-editable/1.5.1/bootstrap3-editable/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/blog/css/tocbot.css: -------------------------------------------------------------------------------- 1 | .toc{overflow-y:auto}.toc>.toc-list{overflow:hidden;position:relative}.toc>.toc-list li{list-style:none}.toc-list{margin:0;padding-left:10px}a.toc-link{color:currentColor;height:100%}.is-collapsible{max-height:1000px;overflow:hidden;transition:all 300ms ease-in-out}.is-collapsed{max-height:0}.is-position-fixed{position:fixed !important;top:0}.is-active-link{font-weight:700}.toc-link::before{background-color:#EEE;content:' ';display:inline-block;height:inherit;left:0;margin-top:-1px;position:absolute;width:2px}.is-active-link::before{background-color:#54BC4B} 2 | -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/3.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/4.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/abbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/abbg.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/aliyun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/aliyun.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/avatar.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/avatar.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/b01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/b01.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/b02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/b02.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/b03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/b03.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/b04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/b04.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/b05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/b05.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/bg.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/c01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/c01.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/c02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/c02.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/c03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/c03.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/c04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/c04.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/close.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/h1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/h1.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/h2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/h2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/hline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/hline.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/huangguan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/huangguan.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/jinniuyun.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/jinniuyun.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/joinwx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/joinwx.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/joinwxqun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/joinwxqun.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/jt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/jt.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/left.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/lm01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/lm01.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/lm02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/lm02.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/lm03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/lm03.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/lm04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/lm04.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/longad.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/longad.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/mian.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/mian.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/qq1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/qq1.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/qq2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/qq2.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/quote-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/quote-bg.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/right.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/star.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/toc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/toc.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/top.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/v.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/wx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/wx.png -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/wxgzh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/wxgzh.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/未标题-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/未标题-2.jpg -------------------------------------------------------------------------------- /src/main/resources/static/blog/images/栏目封面.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/blog/images/栏目封面.psd -------------------------------------------------------------------------------- /src/main/resources/static/blog/js/comm.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | //nav 3 | var obj = null; 4 | var As = document.getElementById('starlist').getElementsByTagName('a'); 5 | obj = As[0]; 6 | for (i = 1; i < As.length; i++) { 7 | if (window.location.href.indexOf(As[i].href) >= 0) obj = As[i]; 8 | } 9 | obj.id = 'selected'; 10 | //nav 11 | $("#mnavh").click(function() { 12 | $("#starlist").toggle(); 13 | $("#mnavh").toggleClass("open"); 14 | }); 15 | //search 16 | $(".searchico").click(function() { 17 | $(".search").toggleClass("open"); 18 | }); 19 | //searchclose 20 | $(".searchclose").click(function() { 21 | $(".search").removeClass("open"); 22 | }); 23 | //banner 24 | $('#banner').easyFader(); 25 | //nav menu 26 | $(".menu").click(function(event) { 27 | $(this).children('.sub').slideToggle(); 28 | }); 29 | //tab 30 | $('.tab_buttons li').click(function() { 31 | $(this).addClass('newscurrent').siblings().removeClass('newscurrent'); 32 | $('.newstab>div:eq(' + $(this).index() + ')').show().siblings().hide(); 33 | }); 34 | }); -------------------------------------------------------------------------------- /src/main/resources/static/blog/js/page2.js: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/static/rsa/rsa_private_key.pem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/rsa/rsa_private_key.pem -------------------------------------------------------------------------------- /src/main/resources/static/rsa/rsa_public_key.pem: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/rsa/rsa_public_key.pem -------------------------------------------------------------------------------- /src/main/resources/static/upload/images/20200406/1586163165546_911.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/upload/images/20200406/1586163165546_911.png -------------------------------------------------------------------------------- /src/main/resources/static/upload/images/20200406/1586163209506_87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/upload/images/20200406/1586163209506_87.png -------------------------------------------------------------------------------- /src/main/resources/static/upload/images/20200406/1586163299105_284.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/upload/images/20200406/1586163299105_284.png -------------------------------------------------------------------------------- /src/main/resources/static/upload/images/20200712/1594540218375_15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zoux9/blog/ed92160af5d9d047a53f75dabf193487714245de/src/main/resources/static/upload/images/20200712/1594540218375_15.jpg -------------------------------------------------------------------------------- /src/main/resources/templates/admin/header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 荔枝博客后台管理系统 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/main/resources/templates/admin/type_add.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
    7 | 8 |
    9 |
    10 |
    11 |
    12 | 13 |
    14 |
    15 | 19 | 20 | 21 |
    22 |
    23 | 24 |
    25 | 28 | 31 |
    32 |
    33 |
    34 | 35 | 36 |
    37 |
    38 | 39 |
    40 |
    41 |
    42 |
    43 |
    44 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /src/main/resources/templates/blog/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 关于我-荔枝博客 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 |
    21 | 22 |
    23 |
    24 |
    25 |

    zealously

    26 |

    在校学生

    27 |

    28 |
    29 |

    关于本站

    30 |

    31 |

      32 |
    • 前端:  Thymeleaf + 杨青《今夕何夕》静态页面
    • 33 |
    • 后端:  SpringBoot + Mybatis + SpringMVC + Spring Security + MySQL + Redis
    • 34 |
    • 开源地址:GitHub
    • 35 |
    36 |

    37 |

    心路历程

    38 | 45 |
    46 |
    47 |
    48 | 49 | 50 | -------------------------------------------------------------------------------- /src/main/resources/templates/blog/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/resources/templates/blog/link.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 申请友链-荔枝博客 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 34 | 35 | 36 | 37 |
    38 | 39 |
    40 |
    41 |

    友链信息

    42 |
    43 | 44 | 45 | 46 |
    47 |
    48 |
    49 |
    50 | 51 | 52 | -------------------------------------------------------------------------------- /src/main/resources/templates/blog/sider.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
    7 |
    8 |

    网站公告

    9 | 12 |
    13 |
    14 |

    点击排行

    15 | 18 |
    19 | 20 |
    21 |

    标签云

    22 | 25 |
    26 | 27 |
    28 | 29 | 30 | -------------------------------------------------------------------------------- /src/main/resources/templates/blog/success.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 提交成功-荔枝博客 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 |
    21 | 22 |
    23 |
    24 |

    提交成功

    25 |
    26 |
    27 |
    28 | 29 | 30 | -------------------------------------------------------------------------------- /src/main/resources/templates/blog/time.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 时间轴-荔枝博客 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 | 19 | 20 |
    21 | 22 |
    23 |
    24 |

    往期文章

    25 | 29 |
      30 |
    31 |
    32 | 33 |
    34 |
    35 | 36 |
    37 | 38 | 39 | -------------------------------------------------------------------------------- /src/main/resources/templates/error/error.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 错误页面 7 | 8 | 9 | 10 | 11 | 12 | 13 | 36 | 37 | 38 | 39 |
    40 |
    41 |
    42 |

    43 |

    44 | 返回首页 45 |
    46 |
    47 |
    48 | 49 | 50 | 51 | 52 | --------------------------------------------------------------------------------