├── docs ├── .nojekyll ├── CNAME ├── _sidebar.md ├── aside.md ├── links.md ├── slide.md ├── README.md ├── index.html ├── icon.md ├── start.md └── history.md ├── .gitignore ├── screenshot.png ├── assets ├── img │ ├── bg.jpg │ ├── bg.png │ ├── logo.png │ ├── love.png │ ├── default.jpg │ ├── qrcode.png │ ├── ua │ │ ├── 360.png │ │ ├── edge.png │ │ ├── ie.png │ │ ├── mac.png │ │ ├── qq.png │ │ ├── uc.png │ │ ├── win1.png │ │ ├── win2.png │ │ ├── apple.png │ │ ├── baidu.png │ │ ├── chrome.png │ │ ├── google.png │ │ ├── liebao.png │ │ ├── linux.png │ │ ├── opera.png │ │ ├── quark.png │ │ ├── safari.png │ │ ├── ubuntu.png │ │ ├── android.png │ │ └── firefox.png │ ├── ico-xiaoji.png │ ├── loading │ │ ├── owo.gif │ │ └── block.gif │ └── rand_default.jpg ├── owo │ └── biaoqing │ │ ├── aru │ │ ├── E59090_2x.png │ │ ├── E6B197_2x.png │ │ ├── E4B8ADE58880_2x.png │ │ ├── E4B8ADE68C87_2x.png │ │ ├── E4B8ADE69EAA_2x.png │ │ ├── E4BAB2E4BAB2_2x.png │ │ ├── E4BEBFE4BEBF_2x.png │ │ ├── E582BBE7AC91_2x.png │ │ ├── E58685E4BCA4_2x.png │ │ ├── E587BBE68E8C_2x.png │ │ ├── E58FA3E6B0B4_2x.png │ │ ├── E59090E8888C_2x.png │ │ ├── E591B2E78999_2x.png │ │ ├── E592BDE6B094_2x.png │ │ ├── E593ADE6B3A3_2x.png │ │ ├── E596B7E6B0B4_2x.png │ │ ├── E596B7E8A180_2x.png │ │ ├── E59D90E7AD89_2x.png │ │ ├── E5A4A7E59BA7_2x.png │ │ ├── E5AEB3E7BE9E_2x.png │ │ ├── E5B08FE68092_2x.png │ │ ├── E5B0B4E5B0AC_2x.png │ │ ├── E5BE97E6848F_2x.png │ │ ├── E6838AE5969C_2x.png │ │ ├── E684A4E68092_2x.png │ │ ├── E68A95E9998D_2x.png │ │ ├── E68AA0E9BCBB_2x.png │ │ ├── E68ABDE7839F_2x.png │ │ ├── E697A0E5A588_2x.png │ │ ├── E697A0E8AFAD_2x.png │ │ ├── E69C9FE5BE85_2x.png │ │ ├── E6ACA2E591BC_2x.png │ │ ├── E6B7B1E6809D_2x.png │ │ ├── E78B82E6B197_2x.png │ │ ├── E78CAEE88AB1_2x.png │ │ ├── E79AB1E79C89_2x.png │ │ ├── E882BFE58C85_2x.png │ │ ├── E884B8E7BAA2_2x.png │ │ ├── E89CA1E7839B_2x.png │ │ ├── E8A782E5AF9F_2x.png │ │ ├── E982AAE681B6_2x.png │ │ ├── E99481E79C89_2x.png │ │ ├── E99481E79C90_2x.png │ │ ├── E995BFE88D89_2x.png │ │ ├── E998B4E69A97_2x.png │ │ ├── E9AB98E585B4_2x.png │ │ ├── E9BB91E7BABF_2x.png │ │ ├── E9BC93E68E8C_2x.png │ │ ├── E4B88DE8AFB4E8AF9D_2x.png │ │ ├── E4B88DE9AB98E585B4_2x.png │ │ ├── E5B08FE79CBCE79D9B_2x.png │ │ ├── E683B3E4B880E683B3_2x.png │ │ ├── E68987E880B3E58589_2x.png │ │ ├── E697A0E68980E8B093_2x.png │ │ ├── E78CAEE9BB84E7939C_2x.png │ │ ├── E79C8BE4B88DE8A781_2x.png │ │ ├── E79C8BE783ADE997B9_2x.png │ │ ├── E8A385E5A4A7E6ACBE_2x.png │ │ ├── E8B59EE4B880E4B8AA_2x.png │ │ ├── E4B88DE587BAE68980E69699_2x.png │ │ ├── E59090E8A180E58092E59CB0_2x.png │ │ ├── E5969CE69E81E8808CE6B3A3_2x.png │ │ └── E69A97E59CB0E8A782E5AF9F_2x.png │ │ ├── paopao │ │ ├── OK_2x.png │ │ ├── haha_2x.png │ │ ├── what_2x.png │ │ ├── E4B996_2x.png │ │ ├── E586B7_2x.png │ │ ├── E59090_2x.png │ │ ├── E591BC_2x.png │ │ ├── E592A6_2x.png │ │ ├── E5958A_2x.png │ │ ├── E596B7_2x.png │ │ ├── E5BCB1_2x.png │ │ ├── E68092_2x.png │ │ ├── E6B197_2x.png │ │ ├── E6B3AA_2x.png │ │ ├── E985B7_2x.png │ │ ├── E992B1_2x.png │ │ ├── E4BEBFE4BEBF_2x.png │ │ ├── E58B89E5BCBA_2x.png │ │ ├── E59083E7939C_2x.png │ │ ├── E59083E7BF94_2x.png │ │ ├── E59090E8888C_2x.png │ │ ├── E591B5E591B5_2x.png │ │ ├── E59388E59388_2x.png │ │ ├── E5989AE7919F_2x.png │ │ ├── E5A4AAE998B3_2x.png │ │ ├── E5A794E5B188_2x.png │ │ ├── E5B08FE4B996_2x.png │ │ ├── E5BC80E5BF83_2x.png │ │ ├── E5BDA9E899B9_2x.png │ │ ├── E5BF83E7A28E_2x.png │ │ ├── E6838AE593AD_2x.png │ │ ├── E6838AE68190_2x.png │ │ ├── E6838AE8AEB6_2x.png │ │ ├── E6898BE7BAB8_2x.png │ │ ├── E68C96E9BCBB_2x.png │ │ ├── E6B299E58F91_2x.png │ │ ├── E6BB91E7A8BD_2x.png │ │ ├── E781AFE6B3A1_2x.png │ │ ├── E788B1E5BF83_2x.png │ │ ├── E78A80E588A9_2x.png │ │ ├── E78B82E6B197_2x.png │ │ ├── E78EABE791B0_2x.png │ │ ├── E7949FE6B094_2x.png │ │ ├── E79691E997AE_2x.png │ │ ├── E79C9FE6A392_2x.png │ │ ├── E79DA1E8A789_2x.png │ │ ├── E7A4BCE789A9_2x.png │ │ ├── E7AC91E5B0BF_2x.png │ │ ├── E7AC91E79CBC_2x.png │ │ ├── E8839CE588A9_2x.png │ │ ├── E88AB1E5BF83_2x.png │ │ ├── E88CB6E69DAF_2x.png │ │ ├── E88DAFE4B8B8_2x.png │ │ ├── E89B8BE7B395_2x.png │ │ ├── E89CA1E7839B_2x.png │ │ ├── E98499E8A786_2x.png │ │ ├── E985B8E788BD_2x.png │ │ ├── E992B1E5B881_2x.png │ │ ├── E998B4E999A9_2x.png │ │ ├── E99FB3E4B990_2x.png │ │ ├── E9A699E89589_2x.png │ │ ├── E9BB91E7BABF_2x.png │ │ ├── E4B88DE9AB98E585B4_2x.png │ │ ├── E4BDA0E68782E79A84_2x.png │ │ ├── E59180E592A9E788B9_2x.png │ │ ├── E5A4A7E68B87E68C87_2x.png │ │ ├── E5A4AAE5BC80E5BF83_2x.png │ │ ├── E5B08FE7BAA2E884B8_2x.png │ │ ├── E68792E5BE97E79086_2x.png │ │ ├── E68D82E598B4E7AC91_2x.png │ │ ├── E7BAA2E9A286E5B7BE_2x.png │ │ ├── E6989FE6989FE69C88E4BAAE_2x.png │ │ └── list.txt │ │ └── quyin │ │ ├── E89B86E99FB3E5A898_OK.png │ │ ├── E89B86E99FB3E5A898_E593BC.png │ │ ├── E89B86E99FB3E5A898_E581B7E79C8B.png │ │ ├── E89B86E99FB3E5A898_E58D96E8908C.png │ │ ├── E89B86E99FB3E5A898_E58EBBE4B896.png │ │ ├── E89B86E99FB3E5A898_E59083E6838A.png │ │ ├── E89B86E99FB3E5A898_E59083E7939C.png │ │ ├── E89B86E99FB3E5A898_E59090E8A180.png │ │ ├── E89B86E99FB3E5A898_E593ADE6B3A3.png │ │ ├── E89B86E99FB3E5A898_E5A4A7E7AC91.png │ │ ├── E89B86E99FB3E5A898_E5AEB3E68095.png │ │ ├── E89B86E99FB3E5A898_E689B6E9A29D.png │ │ ├── E89B86E99FB3E5A898_E6918AE6898B.png │ │ ├── E89B86E99FB3E5A898_E697A0E8AFAD.png │ │ ├── E89B86E99FB3E5A898_E6BB91E7A8BD.png │ │ ├── E89B86E99FB3E5A898_E7949FE6B094.png │ │ ├── E89B86E99FB3E5A898_E79691E997AE.png │ │ ├── E89B86E99FB3E5A898_E79DA1E8A789.png │ │ ├── E89B86E99FB3E5A898_E882A5E79A82.png │ │ └── E89B86E99FB3E5A898_E4B88DE684A7E698AFE68891.png ├── font │ └── HarmonyOS_Sans_SC_Medium.subset.woff2 ├── js │ ├── extend │ │ ├── push.js │ │ ├── toastify.min.js │ │ ├── lazyload.js │ │ ├── view-image.min.js │ │ └── OwO.js │ ├── setting.js │ └── editor.js └── css │ ├── prism.css │ ├── extend │ ├── toastify.min.css │ └── OwO.min.css │ ├── setting.css │ └── comments.css ├── component ├── post.catalog.php ├── index.category.php ├── breadcrumb.content.php ├── index.banner.php ├── index.toolbar.php ├── js.php ├── page.content.php ├── index.article.php └── post.content.php ├── README.md ├── links.php ├── page.php ├── post.php ├── 404.php ├── libs ├── comments.php └── contents.php ├── layout ├── footer.php ├── header.php ├── left.php ├── right.php └── comments.php ├── index.php ├── archive.php ├── archives.php ├── functions.php └── LICENSE /docs/.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | lanstar.dyedd.cn -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/screenshot.png -------------------------------------------------------------------------------- /assets/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/bg.jpg -------------------------------------------------------------------------------- /assets/img/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/bg.png -------------------------------------------------------------------------------- /assets/img/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/logo.png -------------------------------------------------------------------------------- /assets/img/love.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/love.png -------------------------------------------------------------------------------- /assets/img/default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/default.jpg -------------------------------------------------------------------------------- /assets/img/qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/qrcode.png -------------------------------------------------------------------------------- /assets/img/ua/360.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/360.png -------------------------------------------------------------------------------- /assets/img/ua/edge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/edge.png -------------------------------------------------------------------------------- /assets/img/ua/ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/ie.png -------------------------------------------------------------------------------- /assets/img/ua/mac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/mac.png -------------------------------------------------------------------------------- /assets/img/ua/qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/qq.png -------------------------------------------------------------------------------- /assets/img/ua/uc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/uc.png -------------------------------------------------------------------------------- /assets/img/ua/win1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/win1.png -------------------------------------------------------------------------------- /assets/img/ua/win2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/win2.png -------------------------------------------------------------------------------- /assets/img/ua/apple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/apple.png -------------------------------------------------------------------------------- /assets/img/ua/baidu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/baidu.png -------------------------------------------------------------------------------- /assets/img/ua/chrome.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/chrome.png -------------------------------------------------------------------------------- /assets/img/ua/google.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/google.png -------------------------------------------------------------------------------- /assets/img/ua/liebao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/liebao.png -------------------------------------------------------------------------------- /assets/img/ua/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/linux.png -------------------------------------------------------------------------------- /assets/img/ua/opera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/opera.png -------------------------------------------------------------------------------- /assets/img/ua/quark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/quark.png -------------------------------------------------------------------------------- /assets/img/ua/safari.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/safari.png -------------------------------------------------------------------------------- /assets/img/ua/ubuntu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/ubuntu.png -------------------------------------------------------------------------------- /assets/img/ico-xiaoji.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ico-xiaoji.png -------------------------------------------------------------------------------- /assets/img/loading/owo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/loading/owo.gif -------------------------------------------------------------------------------- /assets/img/rand_default.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/rand_default.jpg -------------------------------------------------------------------------------- /assets/img/ua/android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/android.png -------------------------------------------------------------------------------- /assets/img/ua/firefox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/ua/firefox.png -------------------------------------------------------------------------------- /assets/img/loading/block.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/img/loading/block.gif -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E59090_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E59090_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E6B197_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E6B197_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/OK_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/OK_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/haha_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/haha_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/what_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/what_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E4B996_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E4B996_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E586B7_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E586B7_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E59090_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E59090_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E591BC_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E591BC_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E592A6_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E592A6_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5958A_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5958A_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E596B7_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E596B7_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5BCB1_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5BCB1_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E68092_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E68092_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6B197_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6B197_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6B3AA_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6B3AA_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E985B7_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E985B7_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E992B1_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E992B1_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E4B8ADE58880_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E4B8ADE58880_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E4B8ADE68C87_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E4B8ADE68C87_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E4B8ADE69EAA_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E4B8ADE69EAA_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E4BAB2E4BAB2_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E4BAB2E4BAB2_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E4BEBFE4BEBF_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E4BEBFE4BEBF_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E582BBE7AC91_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E582BBE7AC91_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E58685E4BCA4_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E58685E4BCA4_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E587BBE68E8C_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E587BBE68E8C_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E58FA3E6B0B4_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E58FA3E6B0B4_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E59090E8888C_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E59090E8888C_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E591B2E78999_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E591B2E78999_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E592BDE6B094_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E592BDE6B094_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E593ADE6B3A3_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E593ADE6B3A3_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E596B7E6B0B4_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E596B7E6B0B4_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E596B7E8A180_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E596B7E8A180_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E59D90E7AD89_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E59D90E7AD89_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E5A4A7E59BA7_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E5A4A7E59BA7_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E5AEB3E7BE9E_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E5AEB3E7BE9E_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E5B08FE68092_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E5B08FE68092_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E5B0B4E5B0AC_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E5B0B4E5B0AC_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E5BE97E6848F_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E5BE97E6848F_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E6838AE5969C_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E6838AE5969C_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E684A4E68092_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E684A4E68092_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E68A95E9998D_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E68A95E9998D_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E68AA0E9BCBB_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E68AA0E9BCBB_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E68ABDE7839F_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E68ABDE7839F_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E697A0E5A588_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E697A0E5A588_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E697A0E8AFAD_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E697A0E8AFAD_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E69C9FE5BE85_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E69C9FE5BE85_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E6ACA2E591BC_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E6ACA2E591BC_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E6B7B1E6809D_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E6B7B1E6809D_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E78B82E6B197_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E78B82E6B197_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E78CAEE88AB1_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E78CAEE88AB1_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E79AB1E79C89_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E79AB1E79C89_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E882BFE58C85_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E882BFE58C85_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E884B8E7BAA2_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E884B8E7BAA2_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E89CA1E7839B_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E89CA1E7839B_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E8A782E5AF9F_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E8A782E5AF9F_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E982AAE681B6_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E982AAE681B6_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E99481E79C89_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E99481E79C89_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E99481E79C90_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E99481E79C90_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E995BFE88D89_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E995BFE88D89_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E998B4E69A97_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E998B4E69A97_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E9AB98E585B4_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E9AB98E585B4_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E9BB91E7BABF_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E9BB91E7BABF_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E9BC93E68E8C_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E9BC93E68E8C_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E4BEBFE4BEBF_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E4BEBFE4BEBF_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E58B89E5BCBA_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E58B89E5BCBA_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E59083E7939C_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E59083E7939C_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E59083E7BF94_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E59083E7BF94_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E59090E8888C_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E59090E8888C_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E591B5E591B5_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E591B5E591B5_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E59388E59388_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E59388E59388_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5989AE7919F_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5989AE7919F_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5A4AAE998B3_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5A4AAE998B3_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5A794E5B188_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5A794E5B188_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5B08FE4B996_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5B08FE4B996_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5BC80E5BF83_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5BC80E5BF83_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5BDA9E899B9_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5BDA9E899B9_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5BF83E7A28E_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5BF83E7A28E_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6838AE593AD_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6838AE593AD_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6838AE68190_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6838AE68190_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6838AE8AEB6_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6838AE8AEB6_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6898BE7BAB8_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6898BE7BAB8_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E68C96E9BCBB_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E68C96E9BCBB_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6B299E58F91_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6B299E58F91_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6BB91E7A8BD_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6BB91E7A8BD_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E781AFE6B3A1_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E781AFE6B3A1_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E788B1E5BF83_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E788B1E5BF83_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E78A80E588A9_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E78A80E588A9_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E78B82E6B197_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E78B82E6B197_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E78EABE791B0_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E78EABE791B0_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E7949FE6B094_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E7949FE6B094_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E79691E997AE_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E79691E997AE_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E79C9FE6A392_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E79C9FE6A392_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E79DA1E8A789_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E79DA1E8A789_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E7A4BCE789A9_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E7A4BCE789A9_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E7AC91E5B0BF_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E7AC91E5B0BF_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E7AC91E79CBC_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E7AC91E79CBC_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E8839CE588A9_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E8839CE588A9_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E88AB1E5BF83_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E88AB1E5BF83_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E88CB6E69DAF_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E88CB6E69DAF_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E88DAFE4B8B8_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E88DAFE4B8B8_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E89B8BE7B395_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E89B8BE7B395_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E89CA1E7839B_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E89CA1E7839B_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E98499E8A786_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E98499E8A786_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E985B8E788BD_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E985B8E788BD_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E992B1E5B881_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E992B1E5B881_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E998B4E999A9_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E998B4E999A9_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E99FB3E4B990_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E99FB3E4B990_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E9A699E89589_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E9A699E89589_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E9BB91E7BABF_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E9BB91E7BABF_2x.png -------------------------------------------------------------------------------- /assets/font/HarmonyOS_Sans_SC_Medium.subset.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/font/HarmonyOS_Sans_SC_Medium.subset.woff2 -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E4B88DE8AFB4E8AF9D_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E4B88DE8AFB4E8AF9D_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E4B88DE9AB98E585B4_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E4B88DE9AB98E585B4_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E5B08FE79CBCE79D9B_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E5B08FE79CBCE79D9B_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E683B3E4B880E683B3_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E683B3E4B880E683B3_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E68987E880B3E58589_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E68987E880B3E58589_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E697A0E68980E8B093_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E697A0E68980E8B093_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E78CAEE9BB84E7939C_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E78CAEE9BB84E7939C_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E79C8BE4B88DE8A781_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E79C8BE4B88DE8A781_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E79C8BE783ADE997B9_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E79C8BE783ADE997B9_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E8A385E5A4A7E6ACBE_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E8A385E5A4A7E6ACBE_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E8B59EE4B880E4B8AA_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E8B59EE4B880E4B8AA_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E4B88DE9AB98E585B4_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E4B88DE9AB98E585B4_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E4BDA0E68782E79A84_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E4BDA0E68782E79A84_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E59180E592A9E788B9_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E59180E592A9E788B9_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5A4A7E68B87E68C87_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5A4A7E68B87E68C87_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5A4AAE5BC80E5BF83_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5A4AAE5BC80E5BF83_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E5B08FE7BAA2E884B8_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E5B08FE7BAA2E884B8_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E68792E5BE97E79086_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E68792E5BE97E79086_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E68D82E598B4E7AC91_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E68D82E598B4E7AC91_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E7BAA2E9A286E5B7BE_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E7BAA2E9A286E5B7BE_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_OK.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_OK.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E4B88DE587BAE68980E69699_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E4B88DE587BAE68980E69699_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E59090E8A180E58092E59CB0_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E59090E8A180E58092E59CB0_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E5969CE69E81E8808CE6B3A3_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E5969CE69E81E8808CE6B3A3_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/aru/E69A97E59CB0E8A782E5AF9F_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/aru/E69A97E59CB0E8A782E5AF9F_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E593BC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E593BC.png -------------------------------------------------------------------------------- /docs/_sidebar.md: -------------------------------------------------------------------------------- 1 | * [首页](/) 2 | * [起步](start.md) 3 | * [导航](icon.md) 4 | * [更新记录](history.md) 5 | * [友链设置](links.md) 6 | * [幻灯片设置](slide.md) 7 | * [侧边栏设置](aside.md) -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/E6989FE6989FE69C88E4BAAE_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/paopao/E6989FE6989FE69C88E4BAAE_2x.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E581B7E79C8B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E581B7E79C8B.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E58D96E8908C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E58D96E8908C.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E58EBBE4B896.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E58EBBE4B896.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E59083E6838A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E59083E6838A.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E59083E7939C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E59083E7939C.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E59090E8A180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E59090E8A180.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E593ADE6B3A3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E593ADE6B3A3.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E5A4A7E7AC91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E5A4A7E7AC91.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E5AEB3E68095.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E5AEB3E68095.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E689B6E9A29D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E689B6E9A29D.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E6918AE6898B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E6918AE6898B.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E697A0E8AFAD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E697A0E8AFAD.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E6BB91E7A8BD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E6BB91E7A8BD.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E7949FE6B094.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E7949FE6B094.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E79691E997AE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E79691E997AE.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E79DA1E8A789.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E79DA1E8A789.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E882A5E79A82.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E882A5E79A82.png -------------------------------------------------------------------------------- /assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E4B88DE684A7E698AFE68891.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dyedd/lanstar/HEAD/assets/owo/biaoqing/quyin/E89B86E99FB3E5A898_E4B88DE684A7E698AFE68891.png -------------------------------------------------------------------------------- /docs/aside.md: -------------------------------------------------------------------------------- 1 | 这里要说就是媒体信息的添加 2 | 3 | **名称+图标+地址,一行一个** 4 | 5 | 例子: 6 | ``` 7 | github+icon-huaban88+https://github.com/dyedd 8 | qq+icon-qq+tencent://message/?uin=1176996982&Site=Sambow&Menu=yes 9 | bilibili+icon-bilibili+https://space.bilibili.com/27175553 10 | ``` 11 | -------------------------------------------------------------------------------- /docs/links.md: -------------------------------------------------------------------------------- 1 | ## 友链链接的添加 2 | 3 | !> 自2.2.0版本以来,应大家要求,添加了介绍。 4 | 5 | 自定义页面取友情链接! 6 | 7 | ```markdown 8 | !!! 9 | 10 | [links] 11 | 12 | [名称][介绍](网址)+(头像) 13 | 14 | [/links] 15 | 16 | !!! 17 | ``` 18 | 19 | 如果还使用之前版本,`[名称](网址)+(头像)`,改回这样的形式就能正常解析。 20 | 21 | ?> 感叹号这些不能少! -------------------------------------------------------------------------------- /component/post.catalog.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | 5 |
6 |
来自 《title(); ?>》
7 | 9 |
10 | -------------------------------------------------------------------------------- /assets/js/extend/push.js: -------------------------------------------------------------------------------- 1 | (function(){ 2 | var bp = document.createElement('script'); 3 | var curProtocol = window.location.protocol.split(':')[0]; 4 | if (curProtocol === 'https') { 5 | bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; 6 | } 7 | else { 8 | bp.src = 'http://push.zhanzhang.baidu.com/push.js'; 9 | } 10 | var s = document.getElementsByTagName("script")[0]; 11 | s.parentNode.insertBefore(bp, s); 12 | })(); -------------------------------------------------------------------------------- /docs/slide.md: -------------------------------------------------------------------------------- 1 | ### 幻灯片增强 2 | 3 | !> 相比过去版本,可以不只显示图片 4 | 5 | ```text 6 | 图片链接|链接|标题|简介 7 | ``` 8 | 使用色彩增强模式: 9 | ```text 10 | 图片链接|链接|标题|简介|标题颜色|简介颜色|标题大小|简介大小 11 | ``` 12 | 13 | 以此可以实现广告位的效果或者固定链接 14 | 15 | 当然如果不想实现这样的功能 每行一个图片链接即可! 16 | 17 | 如果不想填链接,请写# 字体颜色可以英文缩写or十六进制 字体大小以rem为单位,1rem = 16px,所以你不用带单位 18 | 19 | 例子: 20 | ``` 21 | https://dyedd.cn/usr/uploads/2020/08/4115250106.png|https://dyedd.cn/806.html|lanstar主题下载|你的下一代主题|#000|#fff|3|1.5| 22 | https://dyedd.cn/usr/uploads/2020/08/4115250106.png|https://dyedd.cn/806.html|lanstar主题下载|你的下一代主题|#000|#fff|3|1.5| 23 | ``` -------------------------------------------------------------------------------- /component/index.category.php: -------------------------------------------------------------------------------- 1 | 8 |
9 |
10 | 最新 11 |
12 | widget('Widget_Metas_Category_List')->to($category); ?> 13 | next()): ?> 14 | is('category', $category->slug)): ?> class="collapse-item active" class="collapse-item" 15 | data-href="permalink(); ?>"> 16 | name(); ?> 17 |
18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | Logo 3 | 4 | # 一款三栏、清新、个性的 typecho 主题 5 | ![](https://img.shields.io/badge/for-Typecho-blueviolet.svg?style=flat-square) 6 | ![](https://img.shields.io/github/v/release/dyedd/lanstar?color=red&style=flat-square) 7 | ![](https://img.shields.io/badge/made%20with-%E2%9D%A4-ff69b4.svg?style=flat-square) 8 |
9 | 10 | `lanstar` 11 | 为什么会有这个名称呢,其实很简单,中文名是蓝星,而因为blue star有些奇怪,所以有个这个,在我百度翻译的时候,神奇的发现这个被识别为布列塔尼语, 翻译是兰星,差不多,好巧 12 | 13 | 目前的功能特性,包含了好多,具体可以看博客的介绍,当然也没有列全,可以下载体验我的主题看看。 14 | 15 | 2020-8-20-[最初的介绍](https://dyedd.cn/806.html) 16 | 17 | 2023-1-04-[Lanstar4:锐意新生 自砍三刀](https://dyedd.cn/935.html) 18 | 19 | [演示地址](https://dyedd.cn) 20 | 21 | 当然也欢迎土豪们的投资 22 | 23 | ![二维码](assets/img/qrcode.png) -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | ## 主题由来 2 | 3 | > 在19年我就想做个typecho主题,奈何时间不够充裕,就在前4天,再写python程序休息之余,最终下定决心于抽出时间来填坑,是的,一年前就创建了仓库(但我再重新提交-f 4 | > push,清楚以前憨憨的**黑历史**),正因此我的北极者称号里包含了这个,也因为这个提醒了我这个坑... 5 | 6 | ?> 为什么会有这个名称呢,其实很简单,中文名是蓝星,而因为blue star有些奇怪,所以有个这个,在我百度翻译的时候,神奇的发现这个被识别为布列塔尼语,翻译是兰星,差不多,好巧 7 | 8 | ### 主题功能 9 | 10 | 可以看主题发布页,可能有些隐藏彩蛋没有写出来。 11 | 12 | [主题发布页也是演示网站](https://dyedd.cn/806.html) 13 | 14 | 主题交流群:*1147056149* 15 | 16 | 并且,作者建立了一个现在毫不起眼的组织,欢迎小伙计加入我们的寒泉南行 17 | 18 | _(不是主题交流,是技术,项目交流!)_ 19 | 20 | [寒泉南行](https://jq.qq.com/?_wv=1027&k=SfrIkDB7) 21 | 22 | **在此,非常希望大家可以star这个开源项目,并且能有人和我一起维护它。** 23 | 24 | **当然,可以请我喝杯水:** 25 | 26 | ![二维码](https://github.com/dyedd/lanstar/raw/master/assets/img/qrcode.png) 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | > 帮助文档还在建立中.... 35 | 36 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Lanstar 主题帮助文档 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /component/breadcrumb.content.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 27 | -------------------------------------------------------------------------------- /assets/css/prism.css: -------------------------------------------------------------------------------- 1 | pre code.hljs { 2 | display: block; 3 | overflow-x: auto; 4 | padding: .5em; 5 | background: #2b2b2b; 6 | color: #bababa; 7 | border-radius: 0; 8 | } 9 | .hljs-emphasis, .hljs-strong { 10 | color: #a8a8a2 11 | } 12 | .hljs-bullet, .hljs-link, .hljs-literal, .hljs-number, .hljs-quote, .hljs-regexp { 13 | color: #6896ba 14 | } 15 | .hljs-code, .hljs-selector-class { 16 | color: #a6e22e 17 | } 18 | .hljs-emphasis { 19 | font-style: italic 20 | } 21 | .hljs-attribute, .hljs-keyword, .hljs-name, .hljs-section, .hljs-selector-tag, .hljs-variable { 22 | color: #cb7832 23 | } 24 | .hljs-params { 25 | color: #b9b9b9 26 | } 27 | .hljs-string { 28 | color: #6a8759 29 | } 30 | .hljs-addition, .hljs-built_in, .hljs-builtin-name, .hljs-selector-attr, .hljs-selector-id, .hljs-selector-pseudo, .hljs-subst, .hljs-symbol, .hljs-template-tag, .hljs-template-variable, .hljs-type { 31 | color: #e0c46c 32 | } 33 | .hljs-comment, .hljs-deletion, .hljs-meta { 34 | color: #7f7f7f 35 | } 36 | -------------------------------------------------------------------------------- /docs/icon.md: -------------------------------------------------------------------------------- 1 | ### 如何添加导航小图标? 2 | 3 | 自2.2.0新版本以来,转移`bootstrap icon`至`iconfont` 4 | 5 | #### 采用平台推荐的未来主流symbol引用 6 | 7 | - 支持多色图标了,不再受单色限制。 8 | - 通过一些技巧,支持像字体那样,通过`font-size`,`color`来调整样式。 9 | - 兼容性较差,支持 ie9+,及现代浏览器。 10 | - 浏览器渲染svg的性能一般,还不如png。 11 | 12 | !> 主题使用的图标都写到了`assets/js/icon.js`下 13 | 14 | 大家可以通过此链接预览[iconfont预览工具](http://blog.luckly-mjw.cn/tool-show/iconfont-preview/index.html) 15 | 16 | ?> 然后可以复制名称icon-xxx,到后台,一个按顺序对应一行 17 | 18 | 例子: 19 | ``` 20 | icon-guanyu 21 | icon-pengyouquan 22 | icon-guidang 23 | icon-liuyan 24 | ``` 25 | 26 | ### 那么我可以添加自己的图标吗? 27 | 28 | 当然可以,你只需要在iconfont创建项目,注意: 29 | 30 | ![image-20210101170507643](https://i.loli.net/2021/01/01/sUH2yWdJAkIPZx4.png) 31 | 32 | 不变,然后复制你项目的js链接到component文件夹的`index.footer.php`,**建议直接添加在最后一行**, 33 | 34 | ```js 35 | 36 | ``` 37 | 38 | --- 39 | 40 | 41 | 42 | 2.2.0以前版本: 43 | 44 | 进入网址https://icons.getbootstrap.com/ 45 | 46 | 寻找心爱的图标 47 | 48 | ![方法](https://i.loli.net/2021/01/01/6sapt1CkUX5FoAJ.png) 49 | 50 | 如上图所示,取```alarm-fill``` 51 | 52 | 然后再填到后台模板设置 -------------------------------------------------------------------------------- /links.php: -------------------------------------------------------------------------------- 1 | need('layout/header.php'); 9 | ?> 10 |
11 |
12 |
13 | need('layout/left.php'); ?> 14 |
15 |
16 |
17 |
18 |
19 | need('component/index.toolbar.php'); ?> 20 | need('component/page.content.php') ?> 21 |
22 |
23 | need('layout/right.php'); ?> 24 |
25 |
26 |
27 |
28 |
29 |
30 | need('component/js.php'); ?> 31 | 32 | 33 | -------------------------------------------------------------------------------- /docs/start.md: -------------------------------------------------------------------------------- 1 | ## 开始须知 2 | 3 | !> 很多人使用主题可能都会出现这样的报错 4 | 5 | ```php 6 | syntax error, unexpected 'endwhile' (T_ENDWHILE), expecting elseif (T_ELSEIF) or else (T_ELSE) or endif (T_ENDIF) 7 | ``` 8 | 9 | ?> 那是因为你使用的`php`环境没有开启短代码标记 10 | 11 | ?> `2.2.4` 版本已经彻底移除它的问题 12 | > 这里推荐不是推销,使用宝塔`PHP`,安装到家 13 | 14 | 或者你讨厌使用它,或是使用docker,自行修改`php.ini`,搜索`short_open_tag = Off` 改成 `On` 就行了。 15 | 16 | 因为非常重要,特地放在开头,希望大家能够引起大家的重视。 17 | 18 | `2.2.3`已修复,可以不用开启短代码了 19 | --- 20 | 21 | ### 下载 22 | 23 | #### [下载最新Release版本](https://github.com/dyedd/lanstar/releases/latest) 24 | 25 | > 最新的发布版本,适合绝大多数用户。 26 | 27 | ##### [下载其它版本](https://github.com/dyedd/lanstar) 28 | 29 | > 因为有时候是推送的功能是最新的,却没有打包,你可以直接通过code按钮的Download ZIP 30 | > 31 | > 当然你想使用老版本或者其它,可以选择tags选择自己想要的版本标签,或者点击Releases,滚动你的浏览器查找自己喜欢的版本。 32 | 33 | --- 34 | 35 | ### 安装 36 | 37 | 1. 如果不知道安装在什么目录,那么建议通过和本文档达成战略协议的百度Or谷歌搜索~ 38 | 2. 上传解压到文件夹,重命名为`lanstar` 39 | 1. 注意此文件夹下即可访问`index.php`等资源文件,而非`lanstar/lanstar`形式 40 | 2. 不正常图片显示不正常 41 | 42 | ### 分类图标 43 | ![1.png](https://s2.loli.net/2023/12/17/EPh3bQS1txjaulv.jpg) 44 | 新版的文章列表支持分类图标,但这里的设置其实就在 45 | 46 | **在后台管理-分类-分类描述里添加图片链接** -------------------------------------------------------------------------------- /component/index.banner.php: -------------------------------------------------------------------------------- 1 | 4 | options->bannerBtn):?> 5 | 23 | 24 | -------------------------------------------------------------------------------- /assets/css/extend/toastify.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Toastify js 1.12.0 3 | * https://github.com/apvarun/toastify-js 4 | * @license MIT licensed 5 | * 6 | * Copyright (C) 2018 Varun A P 7 | */.toastify{padding:12px 20px;color:#fff;display:inline-block;box-shadow:0 3px 6px -1px rgba(0,0,0,.12),0 10px 36px -4px rgba(77,96,232,.3);background:-webkit-linear-gradient(315deg,#73a5ff,#5477f5);background:linear-gradient(135deg,#73a5ff,#5477f5);position:fixed;opacity:0;transition:all .4s cubic-bezier(.215,.61,.355,1);border-radius:2px;cursor:pointer;text-decoration:none;max-width:calc(50% - 20px);z-index:2147483647}.toastify.on{opacity:1}.toast-close{background:0 0;border:0;color:#fff;cursor:pointer;font-family:inherit;font-size:1em;opacity:.4;padding:0 5px}.toastify-right{right:15px}.toastify-left{left:15px}.toastify-top{top:-150px}.toastify-bottom{bottom:-150px}.toastify-rounded{border-radius:25px}.toastify-avatar{width:1.5em;height:1.5em;margin:-7px 5px;border-radius:2px}.toastify-center{margin-left:auto;margin-right:auto;left:0;right:0;max-width:fit-content;max-width:-moz-fit-content}@media only screen and (max-width:360px){.toastify-left,.toastify-right{margin-left:auto;margin-right:auto;left:0;right:0;max-width:fit-content}} -------------------------------------------------------------------------------- /page.php: -------------------------------------------------------------------------------- 1 | 2 | need('layout/header.php'); ?> 3 |
4 |
5 |
6 | need('layout/left.php'); ?> 7 |
8 |
9 |
10 |
11 |
12 | need('component/index.toolbar.php'); ?> 13 | need('component/page.content.php') ?> 14 |
15 |
16 | need('layout/right.php'); ?> 17 |
18 |
19 |
20 |
21 |
22 | need('layout/footer.php'); ?> 23 |
24 |
25 |
26 | need('component/js.php'); ?> 27 | 28 | 29 | -------------------------------------------------------------------------------- /post.php: -------------------------------------------------------------------------------- 1 | 2 | need('layout/header.php'); ?> 3 |
4 |
5 |
6 | need('layout/left.php'); ?> 7 |
8 |
9 |
10 |
11 |
12 | need('component/index.toolbar.php'); ?> 13 | need('component/post.content.php'); ?> 14 |
15 |
16 | need('layout/right.php'); ?> 17 |
18 |
19 |
20 |
21 |
22 | need('layout/footer.php'); ?> 23 |
24 |
25 |
26 | need('component/js.php'); ?> 27 | 28 | 29 | -------------------------------------------------------------------------------- /404.php: -------------------------------------------------------------------------------- 1 | 2 | need('layout/header.php'); ?> 3 |
4 |
5 |
6 | need('layout/left.php'); ?> 7 |
8 |
9 |
10 |
11 |
12 | need('component/index.toolbar.php'); ?> 13 |
14 | 17 |
18 |
19 |
20 | need('layout/right.php'); ?> 21 |
22 |
23 |
24 |
25 |
26 | need('layout/footer.php'); ?> 27 |
28 |
29 |
30 | need('component/js.php'); ?> 31 | 32 | 33 | -------------------------------------------------------------------------------- /component/index.toolbar.php: -------------------------------------------------------------------------------- 1 | 8 |
9 |
10 |
11 | 12 | is('index')): ?> 13 | 首页 16 | 17 | need('component/breadcrumb.content.php'); ?> 18 | 19 | 20 |
21 | 24 |
25 |
26 |
27 |
28 | options->asideAvatar): ?> 29 | logo 31 | 32 | logo 34 | 35 |
36 |
37 |
38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /libs/comments.php: -------------------------------------------------------------------------------- 1 | select()->from('table.comments') 22 | ->where('coid = ?', Typecho_Widget::widget('Widget_Comments_Archive')->coid) 23 | ->where('mail = ?', Typecho_Widget::widget('Widget_Archive')->remember('mail', true)) 24 | ->limit(1); 25 | $result = $db->fetchAll($sql); 26 | if ($user->hasLogin() || $result) { 27 | $text = preg_replace($reg, '
${1}
', $text); 28 | } else { 29 | $text = preg_replace($reg, '
该评论仅登录用户及评论双方可见
', $text); 30 | } 31 | } 32 | return $text; 33 | } 34 | 35 | public static function insertSecret($comment) 36 | { 37 | if ($_POST['secret']) { 38 | $comment['text'] = '[secret]' . $comment['text'] . '[/secret]'; 39 | } 40 | return $comment; 41 | } 42 | } -------------------------------------------------------------------------------- /assets/owo/biaoqing/paopao/list.txt: -------------------------------------------------------------------------------- 1 | E4B88DE9AB98E585B4_2x.png 2 | E4B996_2x.png 3 | E4BDA0E68782E79A84_2x.png 4 | E4BEBFE4BEBF_2x.png 5 | E586B7_2x.png 6 | E58B89E5BCBA_2x.png 7 | E59083E7939C_2x.png 8 | E59083E7BF94_2x.png 9 | E59090E8888C_2x.png 10 | E59090_2x.png 11 | E59180E592A9E788B9_2x.png 12 | E591B5E591B5_2x.png 13 | E591BC_2x.png 14 | E592A6_2x.png 15 | E59388E59388_2x.png 16 | E5958A_2x.png 17 | E596B7_2x.png 18 | E5989AE7919F_2x.png 19 | E5A4A7E68B87E68C87_2x.png 20 | E5A4AAE5BC80E5BF83_2x.png 21 | E5A4AAE998B3_2x.png 22 | E5A794E5B188_2x.png 23 | E5B08FE4B996_2x.png 24 | E5B08FE7BAA2E884B8_2x.png 25 | E5BC80E5BF83_2x.png 26 | E5BCB1_2x.png 27 | E5BDA9E899B9_2x.png 28 | E5BF83E7A28E_2x.png 29 | E68092_2x.png 30 | E6838AE593AD_2x.png 31 | E6838AE68190_2x.png 32 | E6838AE8AEB6_2x.png 33 | E68792E5BE97E79086_2x.png 34 | E6898BE7BAB8_2x.png 35 | E68C96E9BCBB_2x.png 36 | E68D82E598B4E7AC91_2x.png 37 | E6989FE6989FE69C88E4BAAE_2x.png 38 | E6B197_2x.png 39 | E6B299E58F91_2x.png 40 | E6B3AA_2x.png 41 | E6BB91E7A8BD_2x.png 42 | E781AFE6B3A1_2x.png 43 | E788B1E5BF83_2x.png 44 | E78A80E588A9_2x.png 45 | E78B82E6B197_2x.png 46 | E78EABE791B0_2x.png 47 | E7949FE6B094_2x.png 48 | E79691E997AE_2x.png 49 | E79C9FE6A392_2x.png 50 | E79DA1E8A789_2x.png 51 | E7A4BCE789A9_2x.png 52 | E7AC91E5B0BF_2x.png 53 | E7AC91E79CBC_2x.png 54 | E7BAA2E9A286E5B7BE_2x.png 55 | E8839CE588A9_2x.png 56 | E88AB1E5BF83_2x.png 57 | E88CB6E69DAF_2x.png 58 | E88DAFE4B8B8_2x.png 59 | E89B8BE7B395_2x.png 60 | E89CA1E7839B_2x.png 61 | E98499E8A786_2x.png 62 | E985B7_2x.png 63 | E985B8E788BD_2x.png 64 | E992B1E5B881_2x.png 65 | E992B1_2x.png 66 | E998B4E999A9_2x.png 67 | E99FB3E4B990_2x.png 68 | E9A699E89589_2x.png 69 | E9BB91E7BABF_2x.png 70 | haha_2x.png 71 | OK_2x.png 72 | what_2x.png 73 | -------------------------------------------------------------------------------- /layout/footer.php: -------------------------------------------------------------------------------- 1 | 2 | 20 | footer(); ?> 21 |
22 | options->darkBtn): ?> 23 |
24 | 暗黑模式 27 |
28 |
29 | 暗黑模式 32 |
33 | 34 | is('post')): ?> 35 |
36 | 评论 39 |
40 | 41 |
42 | 返回顶部 45 |
46 |
47 | -------------------------------------------------------------------------------- /component/js.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | is('index')): ?> 15 | 16 | 17 | 18 | 19 | 23 | options->jsEcho(); ?> 24 | is('page')): ?> 25 | 28 | 29 | options->sidebarBlock && in_array('ShowYourCouple', $this->options->sidebarBlock)): ?> 30 | 31 | 32 | options->jsPushBaidu): ?> 33 | 34 | 35 | options->extraIcon): ?> 36 | 37 | 38 | options->compressHtml):$html_source = ob_get_contents();ob_clean();print utils::compressHtml($html_source);ob_end_flush();endif; ?> 39 | -------------------------------------------------------------------------------- /layout/header.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | is('index')): ?> 12 | 13 | 14 | 15 | 16 | 17 | 18 | <?php $this->archiveTitle(array( 19 | 'category' => _t('分类 %s 下的文章'), 20 | 'search' => _t('包含关键字 %s 的文章'), 21 | 'tag' => _t('标签 %s 下的文章'), 22 | 'author' => _t('%s 发布的文章') 23 | ), '', ' - '); ?><?php $this->options->title(); ?> 24 | 25 | 28 | 35 | header('description=&generator=&template=&pingback=&xmlrpc=&wlw=&commentReply=&rss1=&rss2=&atom='); ?> 36 | options->cssEcho(); ?> 37 | options->headerEcho(); ?> 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /layout/left.php: -------------------------------------------------------------------------------- 1 | 8 |
9 | 10 |
11 | options->asideAvatar): ?> 12 | logo 14 | 15 | logo 17 | 18 | options->asideStatus): ?> 19 | options->asideStatus(); ?> 20 | 21 |
22 |

options->asideName?$this->options->asideName():$this->options->title(); ?>

23 |

options->asideMotto?$this->options->asideMotto():$this->options->description(); ?>

24 |
25 | 50 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | need('layout/header.php'); 13 | ?> 14 |
15 |
16 |
17 |
18 |
19 |
20 | need('layout/left.php'); ?> 21 |
22 |
23 |
24 |
25 |
26 | need('component/index.toolbar.php'); ?> 27 | options->notice): ?> 28 | 31 | 32 | need('component/index.banner.php') ?> 33 | need('component/index.category.php'); ?> 34 |
35 | need('component/index.article.php'); ?> 36 |
37 |
38 | pageLink('加载更多','next'); ?> 39 |
40 |
41 |
42 | need('layout/right.php'); ?> 43 |
44 |
45 |
46 |
47 |
48 | need('layout/footer.php'); ?> 49 |
50 |
51 |
52 | need('component/js.php'); ?> 53 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /component/page.content.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | cover 5 |

6 | user->hasLogin()): ?> 7 | 9 | title(); ?> 10 | 11 | 12 | title(); ?> 13 | 14 |

15 |
16 |
17 | 33 |
34 |
35 |
36 | 37 |
38 | hidden || $this->titleshow): ?> 39 |
41 |
42 | 43 |
44 | 46 | 47 |
48 | 49 |
50 |
51 |
52 |
53 | 54 | content(); ?> 55 | 56 |
57 |
58 |
59 | 更新于: modified) ?> 60 |
61 |
62 | need('layout/comments.php'); ?> 63 |
64 | -------------------------------------------------------------------------------- /archive.php: -------------------------------------------------------------------------------- 1 | 2 | need('layout/header.php'); ?> 3 |
4 |
5 |
6 | need('layout/left.php'); ?> 7 |
8 |
9 |
10 |
11 |
12 | need('component/index.toolbar.php'); ?> 13 | 27 | have()): ?> 28 | need('component/index.article.php'); ?> 29 | 30 |
31 |

32 |
33 | 34 | 35 | pageNav( 37 | '', 40 | '', 43 | 3, '...', array( 44 | 'wrapTag' => 'ul', 45 | 'wrapClass' => 'pagination justify-content-center', 46 | 'itemTag' => 'li', 47 | 'itemClass' => 'page-item', 48 | 'linkClass' => 'page-link', 49 | 'currentClass' => 'active' 50 | )); 51 | ?> 52 |
53 |
54 | need('layout/right.php'); ?> 55 |
56 |
57 |
58 |
59 |
60 | need('layout/footer.php'); ?> 61 |
62 |
63 |
64 | need('component/js.php'); ?> 65 | 66 | 67 | -------------------------------------------------------------------------------- /docs/history.md: -------------------------------------------------------------------------------- 1 | > 懒得写了,大家看看 https://github.com/dyedd/lanstar/releases 2 | ### [3.0.1](https://github.com/dyedd/lanstar/releases/tag/3.0.1) 3 | 4 | 1. 主要对于 #27 的更新 5 | 2. 增加首页文章加载按钮 6 | 7 | ### [3.0.0](https://github.com/dyedd/lanstar/releases/tag/3.0.0) 8 | 9 | 1. 更新了新的样式 10 | 2. 增加了手机适配 11 | 3. 兼容了php8 12 | 13 | 14 | ### [2.2.5](https://github.com/dyedd/lanstar/releases/tag/2.2.5) 15 | 16 | 1. 表情包手机版太小 17 | 2. 取消备案号悬浮,手机版有bug 18 | 19 | ### [2.2.4](https://github.com/dyedd/lanstar/releases/tag/2.2.4) 20 | 21 | 1. 彻底修复短代码标记未开就报错的问题 22 | 2. 移动端无法点击幻灯片 23 | 3. 表情包路径问题 24 | 25 | ### [2.2.3](https://github.com/dyedd/lanstar/releases/tag/2.2.3) 26 | 27 | 1. 感谢网友发现短代码处没有加php,应该解决了不用开启短代码的问题 28 | 2. 暗黑模式上一些颜色的适配 29 | 3. 私密回复的bug,不应该转义啊 30 | 4. 修复非作者的网址不能跳转问题 31 | 5. 修复归档pjax未加载js的问题 32 | 33 | ### [2.2.2](https://github.com/dyedd/lanstar/releases/tag/2.2.2) 34 | 35 | 1. 修复评论无法回复 36 | 2. 增加短代码 37 | 38 | a. 隐藏展开 39 | 40 | b. 提示框 41 | 42 | c. tabs标签切换 43 | 44 | d. 相册功能 45 | 3. 美化404 46 | 47 | ### [2.2.1](https://github.com/dyedd/lanstar/releases/tag/2.2.1) 48 | 49 | > 紧急修复 50 | 51 | 1. 评论无法发送 52 | 2. 表情包加载不出来 53 | 54 | ### [2.2.0](https://github.com/dyedd/lanstar/releases/tag/2.2.0) 55 | 56 | > 2020跨年礼包 57 | 58 | 1. 图片懒加载 59 | 2. 置顶图标的适配 60 | 3. 更新bootstrap5.0 61 | 4. 更新了模板所有的ui 62 | 5. 后台设置美化 63 | 6. 文件重构 64 | 7. 增加情侣功能 65 | 8. bug好多fix了 66 | 9. 更多彩蛋等待发现 67 | 68 | ### [2.1.3](https://github.com/dyedd/lanstar/releases/tag/2.1.3) 69 | 70 | 1. 中间宽度增加,修复高亮无法显示 71 | 2. pjax加载不出来的问题 72 | 3. 重组了js 73 | 74 | ### [2.1.2](https://github.com/dyedd/lanstar/releases/tag/2.1.2) 75 | 76 | 1. when in black mode,the search box fails 77 | 2. text overflow,emoticons overflow 78 | 3. Hide music player lyrics and problems that do not take effect without pjax turned on 79 | 80 | ### [2.1.1](https://github.com/dyedd/lanstar/releases/tag/2.1.1) 81 | 82 | 增加以下功能 83 | 84 | 1. 文章分类显示了 85 | 2. 重构了头部分布 86 | 1. 增加可切换黑暗和白天模式的按钮以及 过渡按钮 87 | 3. 增加pjax 88 | 4. 分页按钮滑稽一下 89 | 5. 美化归档页面 90 | 6. 增加了播放器 91 | 92 | ### [2.0.2](https://github.com/dyedd/lanstar/releases/tag/2.0.2) 93 | 94 | 增加ajax评论 增加html压缩 增加版权声明 增加返回顶部 修复新的更新问题 95 | 96 | ### [2.0](https://github.com/dyedd/lanstar/releases/tag/2.0) 97 | 98 | 修复评论溢出问题 修复最新评论显示了私密回复的问题 99 | 100 | ### [1.9](https://github.com/dyedd/lanstar/releases/tag/1.9) 101 | 102 | 搜索框的修复和归档的增加 103 | 104 | ### [1.8](https://github.com/dyedd/lanstar/releases/tag/1.8) 105 | 106 | 灯箱正则匹配错误 107 | 108 | ### [1.7](https://github.com/dyedd/lanstar/releases/tag/1.7) 109 | 110 | 增加侧边栏模块 隐藏登录地址.. 解决灯箱的问题 增加点赞功能 更新问题 111 | 112 | ### [1.6](https://github.com/dyedd/lanstar/releases/tag/1.6) 113 | 114 | 增加更新检测 增加文章跳转短代码 修复一些oss插件替换文章图片的溢出问题 改善顶部logo即登录的问题 修复评论删除问题 增加多作者模式,开启点击首页标题不跳转而是作者头像 115 | 116 | [1.5](https://github.com/dyedd/lanstar/releases/tag/1.5) 117 | 118 | 增加黑暗模式 增加其它网站视频的插入 更改头像源 119 | 120 | [1.4](https://github.com/dyedd/lanstar/releases/tag/1.4) 121 | 122 | 1.增加b站视频解析 2.增加百度主动推送 123 | 124 | [1.3](https://github.com/dyedd/lanstar/releases/tag/1.3) 125 | 126 | 1.修复只要私密评论的,能看到所有的评论bug 2.增加灯箱 3.修复上下切换自适应问题 4.修复评论编辑自适应问题 5.增加主题备份功能 6.后台增加编辑按钮 7.表情优化 127 | 128 | [1.2](https://github.com/dyedd/lanstar/releases/tag/v1.2) 129 | 130 | 忘记提交js文件 让标签自定义宽度 优化引用里的图片 131 | 132 | [1.0](https://github.com/dyedd/lanstar/releases/tag/1.0) 133 | 134 | 无插件实现浏览量增加 分页按钮增加了,由于本地数据少了,终于加了 135 | 136 | bug的创建 137 | 138 | ?> 2020-8-22 -------------------------------------------------------------------------------- /archives.php: -------------------------------------------------------------------------------- 1 | need('layout/header.php'); 9 | ?> 10 |
11 |
12 |
13 | need('layout/left.php'); ?> 14 |
15 |
16 |
17 |
18 |
19 | need('component/index.toolbar.php'); ?> 20 |
21 | 22 |
23 | widget('Widget_Metas_Tag_Cloud', array('sort' => 'count', 'ignoreZeroCount' => true, 'desc' => true))->to($tags); ?> 24 | have()) : ?> 25 | 34 | 35 |
36 | widget('Widget_Contents_Post_Recent', 'pageSize=10000')->to($archives); 37 | $year = 0; 38 | $mon = 0; 39 | $i = 0; 40 | $j = 0; 41 | $output = ''; 42 | while ($archives->next()) : 43 | $year_tmp = date('Y', $archives->created); 44 | $mon_tmp = date('m', $archives->created); 45 | if ($mon != $mon_tmp && $mon > 0) $output .= '
'; 46 | if ($year != $year_tmp && $year > 0) $output .= '
'; 47 | if ($mon != $mon_tmp) { 48 | $mon = $mon_tmp; 49 | $output .= '
' . $year_tmp . ' 年 ' . $mon . ' 月
'; 55 | echo $output; 56 | ?> 57 |
58 |
59 | 60 |
61 |
62 | need('layout/right.php'); ?> 63 |
64 |
65 |
66 |
67 |
68 | need('layout/footer.php'); ?> 69 |
70 | 71 | 72 | need('component/js.php'); ?> 73 | 74 | 75 | -------------------------------------------------------------------------------- /assets/js/setting.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | (function () { 3 | document.addEventListener('DOMContentLoaded', function () { 4 | let TabItems = document.querySelectorAll('.theme-setting-tab li'); 5 | let Notice = document.querySelector('.theme-setting-notice'); 6 | let Version = document.querySelector('#theme-version'); 7 | let Form = document.querySelector('.theme-setting-contain > form'); 8 | let Content = document.querySelectorAll('.theme-setting-content'); 9 | TabItems.forEach(function (item) { 10 | item.addEventListener('click', function () { 11 | sessionStorage.setItem('theme-setting-current', item.getAttribute('data-current')); 12 | TabItems.forEach(function (_item) { 13 | return _item.classList.remove('active'); 14 | }); 15 | item.classList.add('active'); 16 | 17 | if (item.getAttribute('data-current') === 'theme-setting-notice') { 18 | Notice.style.display = 'block'; 19 | Form.style.display = 'none'; 20 | } else { 21 | Form.style.display = 'block'; 22 | Notice.style.display = 'none'; 23 | } 24 | 25 | Content.forEach(function (_item) { 26 | _item.style.display = 'none'; 27 | if (_item.classList.contains(item.getAttribute('data-current'))) _item.style.display = 'block'; 28 | }); 29 | }); 30 | }); 31 | /* 页面第一次进来 */ 32 | if (sessionStorage.getItem('theme-setting-current')) { 33 | if (sessionStorage.getItem('theme-setting-current') === 'theme-setting-notice') { 34 | Notice.style.display = 'block'; 35 | Form.style.display = 'none'; 36 | } else { 37 | Form.style.display = 'block'; 38 | Notice.style.display = 'none'; 39 | } 40 | 41 | TabItems.forEach(function (item) { 42 | if (item.getAttribute('data-current') === sessionStorage.getItem('theme-setting-current')) { 43 | item.classList.add('active'); 44 | Content.forEach(function (_item) { 45 | if (_item.classList.contains(sessionStorage.getItem('theme-setting-current'))) _item.style.display = 'block'; 46 | }); 47 | } 48 | }); 49 | } else { 50 | TabItems[0].classList.add('active'); 51 | Notice.style.display = 'block'; 52 | Form.style.display = 'none'; 53 | } 54 | const xhr = new XMLHttpRequest(); 55 | const authorInfo = '

Lanstar 主题设置面板

' + 56 | '

作者博客:染念

' + 57 | '

欢迎大家对本项目进行star以及可以的赞助~

' + 58 | '

主题文档

' + 59 | '

更新记录

' 60 | xhr.onreadystatechange = () => { 61 | if (xhr.readyState === 4) { 62 | if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) { 63 | let res = JSON.parse(xhr.responseText); 64 | let str = ''; 65 | if (res.tag_name !== Version.innerHTML) { 66 | str = `检测到版本更新!` 67 | } else { 68 | str = '当前已是最新版本!' 69 | } 70 | str = authorInfo + 71 | '

当前版本号:' + Version.innerHTML + str + '

' + 72 | '

最新版本号:' + res.tag_name + '

' + '

👉查看新版亮点

' + 73 | `

${res.body}


`.replace(/\n/g, '
'); 74 | Notice.innerHTML = str; 75 | Notice.innerHTML += '
' + 76 | '' + 77 | '' + 78 | '' + 79 | '
'; 80 | } else { 81 | Notice.innerHTML = '请求失败!'; 82 | } 83 | } 84 | }; 85 | xhr.open('get', 'https://api.github.com/repos/dyedd/lanstar/releases/latest', true); 86 | xhr.send(null); 87 | }); 88 | })(); 89 | -------------------------------------------------------------------------------- /functions.php: -------------------------------------------------------------------------------- 1 | contentEx = array('contents','parseContent'); 12 | Typecho_Plugin::factory('Widget_Abstract_Contents')->excerptEx = array('contents','parseContent'); 13 | /** 14 | * 后台编辑按钮 15 | */ 16 | Typecho_Plugin::factory('admin/write-post.php')->bottom = array('utils', 'addButton'); 17 | Typecho_Plugin::factory('admin/write-page.php')->bottom = array('utils', 'addButton'); 18 | /** 19 | * 评论接口 by 染念 20 | */ 21 | Typecho_Plugin::factory('Widget_Abstract_Comments')->contentEx = array('comments','parseContent'); 22 | Typecho_Plugin::factory('Widget_Feedback')->comment = array('comments','insertSecret'); 23 | /** 24 | * 文章与独立页自定义字段 25 | */ 26 | function themeFields($layout) { 27 | if (preg_match("/write-post.php/", $_SERVER['REQUEST_URI'])) { 28 | $banner = new \Typecho\Widget\Helper\Form\Element\Text('banner', NULL, NULL, '文章头图', '输入一个图片 url,作为缩略图显示在文章列表,没有则不显示'); 29 | $layout->addItem($banner); 30 | $article_type = new \Typecho\Widget\Helper\Form\Element\Radio('article_type', 31 | array(0 => '默认', 32 | 1 => '图文格式', 33 | 2 => '九空格可点击', 34 | 3 => '日记模式', 35 | 4 => '九空格不可点击'), 36 | 0, '文章列表模式', '日记模式类似我的动态,不可点击'); 37 | $layout->addItem($article_type); 38 | } 39 | } 40 | function themeInit($archive){ 41 | //暴力解决访问加密文章会被 pjax 刷新页面的问题 42 | if ($archive->hidden) header('HTTP/1.1 200 OK'); 43 | //评论回复楼层最高999层.这个正常设置最高只有7层 44 | Helper::options()->commentsMaxNestingLevels = 999; 45 | //强制评论关闭反垃圾保护 46 | Helper::options()->commentsAntiSpam = false; 47 | //将最新的评论展示在前 48 | Helper::options()->commentsOrder = 'DESC'; 49 | //关闭检查评论来源URL与文章链接是否一致判断 50 | Helper::options()->commentsCheckReferer = false; 51 | // 强制开启评论markdown 52 | Helper::options()->commentsMarkdown = '1'; 53 | Helper::options()->commentsHTMLTagAllowed .= '
'; 54 | // 点赞 55 | if ($archive->request->isPost() && $archive->request->agree) { 56 | if ($archive->request->agree == $archive->cid) { 57 | exit(utils::agree($archive->cid)); 58 | } elseif ($archive->is('index')) { 59 | exit(utils::agree($archive->request->agree)); 60 | } 61 | exit('error'); 62 | } 63 | } 64 | 65 | /** 66 | * 显示下一篇 67 | * 68 | * @access public 69 | * @return void 70 | */ 71 | function theNext($widget) 72 | { 73 | $db = Typecho_Db::get(); 74 | $sql = $db->select()->from('table.contents') 75 | ->where('table.contents.created > ?', $widget->created) 76 | ->where('table.contents.status = ?', 'publish') 77 | ->where('table.contents.type = ?', $widget->type) 78 | ->where('table.contents.password IS NULL') 79 | ->order('table.contents.created', Typecho_Db::SORT_ASC) 80 | ->limit(1); 81 | $content = $db->fetchRow($sql); 82 | 83 | if ($content) { 84 | $content = $widget->filter($content); 85 | $link = ' 86 |
87 |
下一篇 >
88 |
89 |
'; 90 | echo $link; 91 | } else { 92 | echo '
93 |
没有更多了
94 |
'; 95 | } 96 | } 97 | 98 | /** 99 | * 显示上一篇 100 | * 101 | * @access public 102 | * @return void 103 | */ 104 | function thePrev($widget) 105 | { 106 | $db = Typecho_Db::get(); 107 | $sql = $db->select()->from('table.contents') 108 | ->where('table.contents.created < ?', $widget->created) 109 | ->where('table.contents.status = ?', 'publish') 110 | ->where('table.contents.type = ?', $widget->type) 111 | ->where('table.contents.password IS NULL') 112 | ->order('table.contents.created', Typecho_Db::SORT_DESC) 113 | ->limit(1); 114 | $content = $db->fetchRow($sql); 115 | if ($content) { 116 | $content = $widget->filter($content); 117 | $link = ' 118 |
119 |
< 上一篇
120 |
121 |
'; 122 | echo $link; 123 | } else { 124 | echo '
125 |
没有更多了
126 |
'; 127 | } 128 | } 129 | 130 | /** 131 | * 获取主题版本号 132 | */ 133 | function themeVersion() { 134 | $info = Typecho_Plugin::parseInfo(__DIR__ . '/index.php'); 135 | return $info['version']; 136 | } 137 | -------------------------------------------------------------------------------- /layout/right.php: -------------------------------------------------------------------------------- 1 | 4 |
5 | 6 |
7 | 17 | options->sidebarBlock && in_array('ShowYourCouple', $this->options->sidebarBlock)): ?> 18 | 24 | 25 | options->sidebarBlock && in_array('ShowBlogInfo', $this->options->sidebarBlock)): ?> 26 |
27 | to($item); ?> 28 |
29 |
30 | publishedPostsNum); ?> 31 | 文章数 32 |
33 |
34 | publishedCommentsNum); ?> 35 | 评论量 36 |
37 |
38 | categoriesNum); ?> 39 | 分类数 40 |
41 |
42 | publishedPagesNum + $item->publishedPostsNum); ?> 43 | 页面数 44 |
45 |
46 |
47 | 48 | 51 | 52 | 53 |
54 |
55 | 已在风雨中度过 options->startTime);?> 56 |
57 |
58 | 59 | is('post')): ?> 60 | need('component/post.catalog.php'); ?> 61 | 62 | options->sidebarBlock && in_array('ShowRecentComments', $this->options->sidebarBlock)): ?> 63 | is('index')): ?> 64 | 94 | 95 | 96 | options->sidebarBlock && in_array('ShowInterestPosts', $this->options->sidebarBlock)): ?> 97 | 103 | 104 | need('layout/footer.php'); ?> 105 | 106 | -------------------------------------------------------------------------------- /assets/js/editor.js: -------------------------------------------------------------------------------- 1 | function insertAtCursor(myField, myValue) { 2 | var textTop = myField.scrollTop; 3 | var documentTop = document.documentElement.scrollTop; 4 | 5 | //IE 浏览器 6 | if (document.selection) { 7 | myField.focus(); 8 | var sel = document.selection.createRange(); 9 | sel.text = myValue; 10 | sel.select(); 11 | } 12 | 13 | //FireFox、Chrome等 14 | else if (myField.selectionStart || myField.selectionStart == '0') { 15 | var startPos = myField.selectionStart; 16 | var endPos = myField.selectionEnd; 17 | myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); 18 | myField.focus(); 19 | myField.selectionStart = startPos + myValue.length; 20 | myField.selectionEnd = startPos + myValue.length; 21 | } else { 22 | myField.value += myValue; 23 | myField.focus(); 24 | } 25 | 26 | myField.scrollTop = textTop; 27 | document.documentElement.scrollTop = documentTop; 28 | } 29 | $(function() { 30 | if($('#wmd-button-row').length>0){ 31 | $('#wmd-button-row').append('
  • '); 34 | $('#wmd-button-row').append('
  • '); 37 | $('#wmd-button-row').append('
  • '); 40 | $('#wmd-button-row').append('
  • '); 43 | $('#wmd-button-row').append('
  • '); 46 | $('#wmd-button-row').append('
  • '); 49 | $('#wmd-button-row').append('
  • '); 52 | $('#wmd-button-row').append('
  • '); 55 | $('#wmd-button-row').append('
  • '); 56 | new OwO({ 57 | logo: '', 60 | container: document.getElementsByClassName('OwO')[0], 61 | target: document.getElementById('text'), 62 | api: owoPath, 63 | position: 'down', 64 | width: '400px', 65 | maxHeight: '250px' 66 | }); 67 | $(document).on('click','#wmd-hide-button',function() { 68 | myField = document.getElementById('text'); 69 | insertAtCursor(myField, '\n[hide]\n\n[/hide]\n'); 70 | }); 71 | $(document).on('click','#wmd-bili-button',function() { 72 | myField = document.getElementById('text'); 73 | insertAtCursor(myField, '\n[bilibili bv="" p="1"]\n'); 74 | }); 75 | $(document).on('click', '#wmd-video-button', function () { 76 | myField = document.getElementById('text'); 77 | insertAtCursor(myField, '\n[video src=""]\n'); 78 | }); 79 | $(document).on('click', '#wmd-cid-button', function () { 80 | myField = document.getElementById('text'); 81 | insertAtCursor(myField, '\n[cid=""]\n'); 82 | }); 83 | $(document).on('click', '#wmd-tip-button', function () { 84 | myField = document.getElementById('text'); 85 | insertAtCursor(myField, '\n[tip type="info"]\n\n[/tip]\n'); 86 | }); 87 | $(document).on('click', '#wmd-collapse-button', function () { 88 | myField = document.getElementById('text'); 89 | insertAtCursor(myField, '\n[collapse]\n[collapse-item label="标题"]\n\n[/collapse-item]\n[/collapse]\n'); 90 | }); 91 | $(document).on('click', '#wmd-tabs-button', function () { 92 | myField = document.getElementById('text'); 93 | insertAtCursor(myField, '\n[tabs]\n[tab-pane label="标题"]\n\n[/tab-pane]\n[/tabs]\n'); 94 | }); 95 | $(document).on('click', '#wmd-photo-button', function () { 96 | myField = document.getElementById('text'); 97 | insertAtCursor(myField, '\n[photo]\n\n[/photo]\n'); 98 | }); 99 | } 100 | }); 101 | -------------------------------------------------------------------------------- /assets/js/extend/toastify.min.js: -------------------------------------------------------------------------------- 1 | !function(t,o){"object"==typeof module&&module.exports?module.exports=o():t.Toastify=o()}(this,function(t){function i(t){return new i.lib.init(t)}function a(t,o){return o.offset[t]?isNaN(o.offset[t])?o.offset[t]:o.offset[t]+"px":"0px"}function l(t,o){return!(!t||"string"!=typeof o)&&!!(t.className&&-1 4 | next()): ?> 5 |
    6 |
    7 |
    8 | 9 |
    10 |
    11 | categories;?> 12 | <?=  $categories[0]['name']; ?> 17 |
    18 | fields->article_type != 3): ?> 19 |
    20 | title(); ?> 21 |
    22 | 23 | fields->article_type == 0): ?> 24 |
    25 | content,2);?> 26 |
    27 | fields->article_type == 1): ?> 28 |
    29 |
    30 | fields->banner && $this->fields->banner != ''): ?> 31 | cover 32 | 33 | cover 34 | 35 |
    36 |
    37 | fields->article_type == 2 || $this->fields->article_type == 4): ?> 38 | 41 | fields->article_type == 3): ?> 42 |
    43 | 46 | content,3);?> 47 |
    48 | 49 |
    50 | fields->article_type != 3 && $this->fields->article_type != 4): ?> 51 | 87 | cid) ?> 88 | 89 |
    90 | 91 | 92 |
    93 | <?=  $comment['author'] ?> 95 | 96 | 97 | 作者 98 | 99 | 101 | |

    |<\/p>/", ' ', 102 | $text) ?> 103 | 104 |

    105 | 106 | 107 |
    108 | 109 | 110 |
    111 | 112 | -------------------------------------------------------------------------------- /layout/comments.php: -------------------------------------------------------------------------------- 1 | 2 | authorId) { 7 | if ($comments->authorId == $comments->ownerId) { 8 | $commentClass .= ' comment-by-author'; 9 | } else { 10 | $commentClass .= ' comment-by-user'; 11 | } 12 | } 13 | ?> 14 |
  • 24 |
    25 | 26 | 27 | 28 | author; ?> 29 | 30 | 31 | 32 |
    33 |
    34 |
    35 | agent); ?> 36 | agent); ?> 37 |
    38 |
    39 |
    40 | content(); ?> 41 |
    42 |
    43 | 回复 44 |
    45 | children): ?> 46 |
    threadedComments($options); ?>
    47 | 48 |
  • 49 | 50 |
    51 | comments()->to($comments); ?> 52 | allow('comment')): ?> 53 |
    54 |
    55 | cancelReply(); ?> 56 |
    57 |
    58 |
    59 | user->hasLogin()): ?> 60 |
    61 | 62 | 64 |
    65 |
    66 | 68 | options->commentsRequireMail): ?> required /> 70 |
    71 |
    72 | 74 | options->commentsRequireURL): ?> required /> 77 |
    78 | 79 |
    80 | 81 | 83 |
    84 |
    85 |
    86 |
    87 | 88 | 91 | 92 |
    93 |
    94 |
    95 |
    96 | 97 | have()): ?> 98 |
    99 | listComments(); ?> 100 | pageNav( 102 | '', 105 | '', 108 | 1, '...', array( 109 | 'wrapTag' => 'ul', 110 | 'wrapClass' => 'pagination justify-content-center', 111 | 'itemTag' => 'li', 112 | 'itemClass' => 'page-item', 113 | 'linkClass' => 'page-link', 114 | 'currentClass' => 'active' 115 | )); 116 | ?> 117 |
    118 | 119 | 120 |
    121 | -------------------------------------------------------------------------------- /assets/js/extend/lazyload.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Lazy Load - JavaScript plugin for lazy loading images 3 | * 4 | * Copyright (c) 2007-2019 Mika Tuupola 5 | * 6 | * Licensed under the MIT license: 7 | * http://www.opensource.org/licenses/mit-license.php 8 | * 9 | * Project home: 10 | * https://appelsiini.net/projects/lazyload 11 | * 12 | * Version: 2.0.0-rc.2 13 | * 14 | */ 15 | 16 | (function (root, factory) { 17 | if (typeof exports === "object") { 18 | module.exports = factory(root); 19 | } else if (typeof define === "function" && define.amd) { 20 | define([], factory); 21 | } else { 22 | root.LazyLoad = factory(root); 23 | } 24 | }) (typeof global !== "undefined" ? global : this.window || this.global, function (root) { 25 | 26 | "use strict"; 27 | 28 | if (typeof define === "function" && define.amd){ 29 | root = window; 30 | } 31 | 32 | const defaults = { 33 | src: "data-src", 34 | srcset: "data-srcset", 35 | selector: ".lazyload", 36 | root: null, 37 | rootMargin: "0px", 38 | threshold: 0 39 | }; 40 | 41 | /** 42 | * Merge two or more objects. Returns a new object. 43 | * @private 44 | * @param {Boolean} deep If true, do a deep (or recursive) merge [optional] 45 | * @param {Object} objects The objects to merge together 46 | * @returns {Object} Merged values of defaults and options 47 | */ 48 | const extend = function () { 49 | 50 | let extended = {}; 51 | let deep = false; 52 | let i = 0; 53 | let length = arguments.length; 54 | 55 | /* Check if a deep merge */ 56 | if (Object.prototype.toString.call(arguments[0]) === "[object Boolean]") { 57 | deep = arguments[0]; 58 | i++; 59 | } 60 | 61 | /* Merge the object into the extended object */ 62 | let merge = function (obj) { 63 | for (let prop in obj) { 64 | if (Object.prototype.hasOwnProperty.call(obj, prop)) { 65 | /* If deep merge and property is an object, merge properties */ 66 | if (deep && Object.prototype.toString.call(obj[prop]) === "[object Object]") { 67 | extended[prop] = extend(true, extended[prop], obj[prop]); 68 | } else { 69 | extended[prop] = obj[prop]; 70 | } 71 | } 72 | } 73 | }; 74 | 75 | /* Loop through each object and conduct a merge */ 76 | for (; i < length; i++) { 77 | let obj = arguments[i]; 78 | merge(obj); 79 | } 80 | 81 | return extended; 82 | }; 83 | 84 | function LazyLoad(images, options) { 85 | this.settings = extend(defaults, options || {}); 86 | this.images = images || document.querySelectorAll(this.settings.selector); 87 | this.observer = null; 88 | this.init(); 89 | } 90 | 91 | LazyLoad.prototype = { 92 | init: function() { 93 | 94 | /* Without observers load everything and bail out early. */ 95 | if (!root.IntersectionObserver) { 96 | this.loadImages(); 97 | return; 98 | } 99 | 100 | let self = this; 101 | let observerConfig = { 102 | root: this.settings.root, 103 | rootMargin: this.settings.rootMargin, 104 | threshold: [this.settings.threshold] 105 | }; 106 | 107 | this.observer = new IntersectionObserver(function(entries) { 108 | Array.prototype.forEach.call(entries, function (entry) { 109 | if (entry.isIntersecting) { 110 | self.observer.unobserve(entry.target); 111 | let src = entry.target.getAttribute(self.settings.src); 112 | let srcset = entry.target.getAttribute(self.settings.srcset); 113 | if ("img" === entry.target.tagName.toLowerCase()) { 114 | if (src) { 115 | entry.target.src = src; 116 | } 117 | if (srcset) { 118 | entry.target.srcset = srcset; 119 | } 120 | } else { 121 | entry.target.style.backgroundImage = "url(" + src + ")"; 122 | } 123 | } 124 | }); 125 | }, observerConfig); 126 | 127 | Array.prototype.forEach.call(this.images, function (image) { 128 | self.observer.observe(image); 129 | }); 130 | }, 131 | 132 | loadAndDestroy: function () { 133 | if (!this.settings) { return; } 134 | this.loadImages(); 135 | this.destroy(); 136 | }, 137 | 138 | loadImages: function () { 139 | if (!this.settings) { return; } 140 | 141 | let self = this; 142 | Array.prototype.forEach.call(this.images, function (image) { 143 | let src = image.getAttribute(self.settings.src); 144 | let srcset = image.getAttribute(self.settings.srcset); 145 | if ("img" === image.tagName.toLowerCase()) { 146 | if (src) { 147 | image.src = src; 148 | } 149 | if (srcset) { 150 | image.srcset = srcset; 151 | } 152 | } else { 153 | image.style.backgroundImage = "url('" + src + "')"; 154 | } 155 | }); 156 | }, 157 | 158 | destroy: function () { 159 | if (!this.settings) { return; } 160 | this.observer.disconnect(); 161 | this.settings = null; 162 | } 163 | }; 164 | 165 | root.lazyload = function(images, options) { 166 | return new LazyLoad(images, options); 167 | }; 168 | 169 | if (root.jQuery) { 170 | const $ = root.jQuery; 171 | $.fn.lazyload = function (options) { 172 | options = options || {}; 173 | options.attribute = options.attribute || "data-src"; 174 | new LazyLoad($.makeArray(this), options); 175 | return this; 176 | }; 177 | } 178 | 179 | return LazyLoad; 180 | }); 181 | -------------------------------------------------------------------------------- /assets/js/extend/view-image.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ViewImage.min.js 2.0.2 3 | * MIT License - http://www.opensource.org/licenses/mit-license.php 4 | * https://tokinx.github.io/ViewImage/ 5 | */ 6 | var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(b){return b.raw=b};$jscomp.createTemplateTagFirstArgWithRaw=function(b,a){b.raw=a;return b};$jscomp.arrayIteratorImpl=function(b){var a=0;return function(){return a\n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n '+ 10 | (c+1)+"/"+a.length+'\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n ', 11 | "text/html").body.firstChild,g=function(f){var h={Escape:"close",ArrowLeft:"tools__flip-prev",ArrowRight:"tools__flip-next"};h[f.key]&&e.querySelector(".view-image-"+h[f.key]).click()},l=function(f){var h=new Image,k=e.querySelector(".view-image-lead");k.className="view-image-lead view-image-lead__out";setTimeout(function(){k.innerHTML="";h.onload=function(){setTimeout(function(){k.innerHTML='ViewImage';k.className="view-image-lead view-image-lead__in"},100)}; 12 | h.src=f},300)};document.body.appendChild(e);l(d);window.addEventListener("keydown",g);e.onclick=function(f){f.target.closest(".view-image-close")?(window.removeEventListener("keydown",g),e.onclick=null,e.classList.add("view-image__out"),setTimeout(function(){return e.remove()},290)):f.target.closest(".view-image-tools__flip")&&(c=f.target.closest(".view-image-tools__flip-prev")?0===c?a.length-1:c-1:c===a.length-1?0:c+1,l(a[c]),e.querySelector(".view-image-index").innerHTML=c+1)}}}})(); 13 | -------------------------------------------------------------------------------- /assets/js/extend/OwO.js: -------------------------------------------------------------------------------- 1 | ;(() => { 2 | class OwO { 3 | constructor(option) { 4 | const defaultOption = { 5 | container: document.getElementsByClassName('OwO')[0], 6 | target: document.getElementsByTagName('textarea')[0], 7 | position: 'down', 8 | width: '100%', 9 | maxHeight: '250px', 10 | api: 'https://api.anotherhome.net/OwO/OwO.json' 11 | } 12 | for (let defaultKey in defaultOption) { 13 | if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) { 14 | option[defaultKey] = defaultOption[defaultKey] 15 | } 16 | } 17 | this.container = option.container 18 | this.target = option.target 19 | if (option.position === 'up') { 20 | this.container.classList.add('OwO-up') 21 | } 22 | const xhr = new XMLHttpRequest() 23 | xhr.onreadystatechange = () => { 24 | if (xhr.readyState === 4) { 25 | if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) { 26 | this.odata = JSON.parse(xhr.responseText) 27 | this.init(option) 28 | } else { 29 | console.log('OwO data request was unsuccessful: ' + xhr.status) 30 | } 31 | } 32 | } 33 | xhr.open('get', option.api, true) 34 | xhr.send(null) 35 | } 36 | 37 | init(option) { 38 | this.area = option.target 39 | this.packages = Object.keys(this.odata) 40 | 41 | // fill in HTML 42 | let html = ` 43 | 44 |
    ` 45 | 46 | for (let i = 0; i < this.packages.length; i++) { 47 | html += ` 48 | ` 63 | } 64 | 65 | html += ` 66 |
    67 | 76 |
    77 |
    78 | ` 79 | this.container.innerHTML = html 80 | 81 | // bind event 82 | this.logo = document.getElementsByClassName('OwO-logo')[0] 83 | this.logo.addEventListener('click', e => { 84 | e.stopPropagation() 85 | this.toggle() 86 | }) 87 | 88 | this.container.getElementsByClassName('OwO-body')[0].addEventListener('click', e => { 89 | let target = null 90 | if (e.target.classList.contains('OwO-item')) { 91 | target = e.target 92 | } else if (e.target.parentNode.classList.contains('OwO-item')) { 93 | target = e.target.parentNode 94 | } 95 | if (target) { 96 | const cursorPos = this.area.selectionEnd 97 | let areaValue = this.area.value 98 | //this.area.value = areaValue.slice(0, cursorPos) + target.innerHTML + areaValue.slice(cursorPos); 99 | if (target.dataset.id == 'not-given') { 100 | this.area.value = areaValue.slice(0, cursorPos) + target.innerHTML + areaValue.slice(cursorPos) 101 | } else { 102 | this.area.value = areaValue.slice(0, cursorPos) + target.dataset.id + areaValue.slice(cursorPos) 103 | } 104 | this.area.focus() 105 | this.toggle() 106 | } 107 | }) 108 | this.packagesEle = this.container.getElementsByClassName('OwO-packages')[0] 109 | for (let i = 0; i < this.packagesEle.children.length; i++) { 110 | ;(index => { 111 | this.packagesEle.children[i].addEventListener('click', e => { 112 | e.stopPropagation() 113 | this.tab(index) 114 | }) 115 | })(i) 116 | } 117 | this.tab(0) 118 | } 119 | 120 | toggle() { 121 | if (this.container.classList.contains('OwO-open')) { 122 | this.container.classList.remove('OwO-open') 123 | } else { 124 | this.container.classList.add('OwO-open') 125 | } 126 | } 127 | 128 | tab(index) { 129 | const itemsShow = this.container.getElementsByClassName('OwO-items-show')[0] 130 | if (itemsShow) { 131 | itemsShow.classList.remove('OwO-items-show') 132 | } 133 | this.container.getElementsByClassName('OwO-items')[index].classList.add('OwO-items-show') 134 | 135 | const packageActive = this.container.getElementsByClassName('OwO-package-active')[0] 136 | if (packageActive) { 137 | packageActive.classList.remove('OwO-package-active') 138 | } 139 | this.packagesEle.getElementsByTagName('li')[index].classList.add('OwO-package-active') 140 | } 141 | } 142 | 143 | if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { 144 | module.exports = OwO 145 | } else { 146 | window.OwO = OwO 147 | } 148 | })() 149 | let apiUrl = `${themeUrl}assets/owo/OwO.json` 150 | new OwO({ 151 | logo: 'OωO', 152 | container: document.getElementsByClassName('OwO')[0], 153 | target: document.getElementsByClassName('textarea')[0], 154 | api: apiUrl, 155 | position: 'down', 156 | width: '100%', 157 | maxHeight: '250px' 158 | }); 159 | -------------------------------------------------------------------------------- /component/post.content.php: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 | cover 5 |

    6 | user->hasLogin()): ?> 7 | 9 | title(); ?> 10 | 11 | 12 | title(); ?> 13 | 14 |

    15 |
    16 |
    17 | 38 |
    39 |
    40 |
    41 | 42 |
    43 | hidden || $this->titleshow): ?> 44 |
    46 |
    47 | 48 |
    49 | 51 | 52 |
    53 | 54 |
    55 |
    56 |
    57 |
    58 | 59 | content(); ?> 60 | 61 |
    62 |

    tags(' ', true, ''); ?>

    63 |
    64 |
    65 |
    66 | 69 | 版权属于:author(); ?> 70 |
    71 |
    72 | 75 | 本文链接: 77 | permalink(); ?> 78 |
    79 |
    80 | 83 | 作品采用:options->LicenseInfo ? $this->options->LicenseInfo : '本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。' ?> 84 |
    85 |
    86 |
    87 |
    88 |
    89 | 更新于: modified) ?> 90 |
    91 |
    92 |
    93 |
    94 | 96 | 99 | 100 |
    101 |
    104 | 107 | hidden ? array('agree' => 0, 'recording' => true) : utils::agreeNum($this->cid); ?> 108 | 109 |
    110 |
    111 | 116 | 132 |
    133 |
    134 |
    135 | 138 | 141 |
    142 | need('layout/comments.php'); ?> 143 |
    144 | -------------------------------------------------------------------------------- /assets/css/setting.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | -webkit-tap-highlight-color: transparent; 6 | outline: none 7 | } 8 | 9 | html, body { 10 | scroll-behavior: smooth 11 | } 12 | 13 | li { 14 | list-style: none 15 | } 16 | 17 | ::-webkit-scrollbar { 18 | width: 8px; 19 | height: 8px 20 | } 21 | 22 | ::-webkit-scrollbar-thumb { 23 | border-radius: 4px; 24 | background-color: rgba(50, 50, 50, 0.3) 25 | } 26 | 27 | ::-webkit-scrollbar-track { 28 | border-radius: 4px; 29 | background-color: rgba(50, 50, 50, 0.1) 30 | } 31 | 32 | .col-mb-12.col-tb-8.col-tb-offset-2 { 33 | margin-left: 0; 34 | width: 100% 35 | } 36 | 37 | .theme-setting-contain { 38 | display: flex; 39 | word-wrap: break-word 40 | } 41 | 42 | .theme-setting-contain .theme-setting-left-aside { 43 | position: -webkit-sticky; 44 | position: sticky; 45 | top: 20px; 46 | width: 200px; 47 | background: #fff; 48 | padding: 15px; 49 | box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22); 50 | border-radius: 8px 51 | } 52 | 53 | .theme-setting-contain .theme-setting-left-aside .theme-setting-tab { 54 | padding: 0; 55 | margin-bottom: 15px 56 | } 57 | 58 | .theme-setting-contain .theme-setting-left-aside .theme-setting-tab li { 59 | border-radius: 20px; 60 | text-align: center; 61 | height: 40px; 62 | line-height: 40px; 63 | color: #606266; 64 | cursor: pointer; 65 | transition: all 0.35s; 66 | -webkit-user-select: none; 67 | -moz-user-select: none; 68 | -ms-user-select: none; 69 | user-select: none 70 | } 71 | 72 | .theme-setting-contain .theme-setting-left-aside .theme-setting-tab li.active { 73 | color: #409eff 74 | } 75 | 76 | .theme-setting-contain .theme-setting-left-aside .theme-setting-tab li:hover { 77 | background: #f2f6fc 78 | } 79 | 80 | .theme-backup input { 81 | width: 170px; 82 | height: 40px; 83 | line-height: 40px; 84 | margin-bottom: 15px; 85 | margin-right: 15px; 86 | border: none; 87 | color: #fff; 88 | font-size: 14px; 89 | border-radius: 20px; 90 | transition: all 0.35s 91 | } 92 | 93 | .theme-backup input:hover { 94 | opacity: 0.85 95 | } 96 | 97 | .theme-backup input:nth-child(1) { 98 | background: #5cb85c 99 | } 100 | 101 | .theme-backup input:nth-child(2) { 102 | background: #f0ad4e 103 | } 104 | 105 | .theme-backup input:nth-child(3) { 106 | margin-bottom: 0; 107 | background: #d9534f 108 | } 109 | 110 | .theme-setting-contain > form { 111 | position: relative; 112 | display: none; 113 | background: #fff; 114 | flex: 1; 115 | margin-left: 20px; 116 | box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22); 117 | border-radius: 8px 118 | } 119 | 120 | .theme-setting-contain > form .typecho-option { 121 | position: -webkit-sticky; 122 | position: sticky; 123 | bottom: 0; 124 | display: flex; 125 | align-items: center; 126 | justify-content: center; 127 | margin: 0; 128 | padding: 20px; 129 | background: #fff; 130 | border-top: 1px solid #ebebeb 131 | } 132 | 133 | .theme-setting-contain > form .typecho-option button { 134 | width: 170px; 135 | height: 45px 136 | } 137 | 138 | .theme-setting-contain > form .theme-setting-content { 139 | display: none; 140 | padding: 20px 141 | } 142 | 143 | .theme-setting-contain > form .theme-setting-content li { 144 | border: 1px solid #e9e9eb; 145 | padding: 15px 146 | } 147 | 148 | .theme-setting-contain > form .theme-setting-content li .typecho-label { 149 | display: block; 150 | border-left: 3px solid #409eff; 151 | line-height: 40px; 152 | background: #ecf5ff; 153 | margin-bottom: 15px; 154 | padding: 0 15px; 155 | color: #409eff; 156 | -webkit-user-select: none; 157 | -moz-user-select: none; 158 | -ms-user-select: none; 159 | user-select: none 160 | } 161 | 162 | .theme-setting-contain > form .theme-setting-content li select { 163 | outline: none; 164 | padding: 0 10px; 165 | height: 35px; 166 | border: 1px solid #e9e9eb; 167 | color: #666 168 | } 169 | 170 | .theme-setting-contain > form .theme-setting-content li textarea, .theme-setting-contain > form .theme-setting-content li input[type='text'] { 171 | width: 100%; 172 | outline: none; 173 | padding: 15px; 174 | color: #666; 175 | border: 1px solid #e9e9eb; 176 | -webkit-appearance: none 177 | } 178 | 179 | .theme-setting-contain > form .theme-setting-content li .multiline { 180 | display: flex; 181 | align-items: center; 182 | color: #666 183 | } 184 | 185 | .theme-setting-contain > form .theme-setting-content li .multiline input[type='checkbox'] { 186 | margin-right: 5px 187 | } 188 | 189 | .theme-setting-contain > form .theme-setting-content li .description { 190 | background: #f8f8f8; 191 | color: #999; 192 | padding: 10px; 193 | margin-top: 15px; 194 | line-height: 24px 195 | } 196 | 197 | .theme-setting-contain .theme-setting-notice { 198 | display: none; 199 | margin-left: 20px; 200 | display: block; 201 | background: #fff; 202 | padding: 20px; 203 | flex: 1; 204 | box-shadow: 0px 0px 20px -5px rgba(158, 158, 158, 0.22); 205 | border-radius: 8px 206 | } 207 | 208 | .theme-setting-contain .theme-setting-notice .update { 209 | font-weight: 700; 210 | font-size: 15px; 211 | margin-left: 5px; 212 | color: #ff3d3d 213 | } 214 | 215 | .theme-setting-contain .theme-setting-notice .no-update { 216 | font-weight: 700; 217 | font-size: 15px; 218 | margin-left: 5px; 219 | color: #27ae60 220 | } 221 | 222 | .theme-setting-contain .theme-setting-notice p { 223 | line-height: 30px 224 | } 225 | 226 | .theme-setting-contain .theme-setting-notice ol { 227 | color: #555; 228 | padding: 0 40px; 229 | margin: 10px 0 230 | } 231 | 232 | .theme-setting-contain .theme-setting-notice ol li { 233 | list-style: decimal; 234 | line-height: 30px 235 | } 236 | 237 | .theme-setting-contain .theme-setting-notice ul { 238 | color: #555; 239 | padding: 0 40px; 240 | margin: 10px 0 241 | } 242 | 243 | .theme-setting-contain .theme-setting-notice ul li { 244 | list-style: disc; 245 | line-height: 30px 246 | } 247 | 248 | @media (max-width: 768px) { 249 | .theme-setting-contain { 250 | display: block 251 | } 252 | 253 | .theme-setting-contain .theme-setting-notice { 254 | margin-left: 0 255 | } 256 | 257 | .theme-setting-contain > form { 258 | margin-left: 0 259 | } 260 | 261 | .theme-setting-contain > form .theme-setting-content { 262 | padding: 15px 263 | } 264 | 265 | .theme-setting-contain > form .typecho-option { 266 | padding: 10px 0 267 | } 268 | 269 | .theme-setting-contain .theme-setting-left-aside { 270 | width: 100%; 271 | margin-bottom: 15px 272 | } 273 | 274 | .theme-setting-contain .theme-setting-left-aside .logo { 275 | display: none 276 | } 277 | 278 | .theme-setting-contain .theme-setting-left-aside .theme-setting-tab { 279 | display: flex; 280 | flex-wrap: wrap; 281 | border-bottom: 1px solid #ebeef5; 282 | padding-bottom: 10px 283 | } 284 | 285 | .theme-setting-contain .theme-setting-left-aside .theme-setting-tab li { 286 | width: 33.33333333% 287 | } 288 | 289 | .theme-backup { 290 | display: flex; 291 | align-items: center; 292 | justify-content: space-between 293 | } 294 | 295 | .theme-backup input { 296 | width: auto; 297 | flex: 1; 298 | margin-bottom: 0; 299 | margin-right: 0; 300 | } 301 | 302 | .theme-backup input:nth-child(2) { 303 | margin: 0 10px 304 | } 305 | } 306 | 307 | .theme-setting-contain .theme-setting-notice .theme-plane { 308 | font-weight: 700; 309 | font-size: 24px; 310 | text-align: center; 311 | margin-bottom: 20px; 312 | color: #858282; 313 | } -------------------------------------------------------------------------------- /assets/css/comments.css: -------------------------------------------------------------------------------- 1 | /** * comments */ 2 | .respond { 3 | padding: 1.5rem; 4 | } 5 | .comments #response { 6 | font-size: 2rem; 7 | font-weight: bold; 8 | margin-bottom: 1.6rem; 9 | } 10 | .comments form { 11 | margin-top: 1rem; 12 | margin-bottom: 1rem; 13 | } 14 | .comments .option input { 15 | display: block; 16 | padding: 1rem; 17 | margin-bottom: 1rem; 18 | width: auto; 19 | min-width: 24rem; 20 | outline: none; 21 | font-size: 0.9rem; 22 | letter-spacing: .2rem; 23 | transition: all .6s ease-out; 24 | border-radius: .5rem; 25 | border: solid .1rem var(--border); 26 | } 27 | .comments .textarea { 28 | padding: .5rem 1rem; 29 | margin: 1.5rem 0; 30 | min-width: 24rem; 31 | display: block; 32 | outline: none; 33 | font-size: 1.4rem; 34 | letter-spacing: .2rem; 35 | border-radius: .5rem; 36 | border: solid .1rem var(--border); 37 | transition: all .6s ease-out; 38 | width: 100%; 39 | } 40 | .comments-row { 41 | font-size: 1.5rem; 42 | } 43 | .comments-toolbar { 44 | position: relative; 45 | } 46 | .comments-toolbar .option { 47 | position: absolute; 48 | right: 0; 49 | top: 0; 50 | } 51 | .comments .option button { 52 | padding: .8rem 1.5rem; 53 | color: white; 54 | font-size: 1.3rem; 55 | text-align: center; 56 | cursor: pointer; 57 | background-color: var(--theme-color); 58 | border: none; 59 | border-radius: .5rem; 60 | transition: all .3s ease-out; 61 | } 62 | #comments .comment-list { 63 | padding: 0 1rem; 64 | margin: 0; 65 | } 66 | .comment-content .emoji { 67 | width: 4.8rem; 68 | } 69 | .comment-author .time { 70 | margin-left: .5rem; 71 | font-size: 1.2rem; 72 | color: var(--text2); 73 | } 74 | li.comment-by-author > .comment-author span:after { 75 | content: ''; 76 | position: absolute; 77 | height: 1.8rem; 78 | width: 1.8rem; 79 | right: -.5rem; 80 | bottom: 0; 81 | background-repeat: no-repeat; 82 | background-position: 50% 50%; 83 | background-size: cover; 84 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAMAAABg3Am1AAAAmVBMVEVHcEz/////////////////////////////////////////////////////////////////////////////////////uCD/////wTv/0nD//fn/9+b/uyr/8tf/89r/yFP/uiX/wkD/3JP/+u7/2Yj/yVf/14H/9d//vC3/xUn/5rD/1Hf/35r/6r7/zWH/0Gv/4aD/vjP/7cgz761DAAAAFnRSTlMAy2YKAzcb5vZcfPIRYPnsr9u3CU6PxtEgXAAAAg1JREFUSMedltmWqjAQRaOtQjuPtRFNCyJqtz3//8fdB0ErINrc8yQrFdeuStVJjClqNl9MJ6PhcDSZLuYz80D9wdhHyR8P+nfCn7o9Sup1nyrCW00PALtdpvF6HafLrQXAa7ZuxXcaAHYfiFKwtwCNTjm+7QGrpZS0XAFeuxj/7EO4i+SGol0I/nMhHkg2UqFNAjg72j7YQCoVWPAVVccDu5Y7WlvwLpm3GpAEcldBAo28uk0IN/JAmxCa2fl6sJOH2oF3PvMurKLHG6IVdI0xpt+D7LxeADi5KABbEZEl9PrGmAHYbHELwIez4RdIjiIiYmFgjBnDPlt8BSA8qvhPuGS4h7ExMx8uJT0z6YZ64ZphAP7MzK9EN5hOTlIW5maRpaSZ1royHCL1fwszdRAOAHyp2qsvWcLUTCCVAtNb9nVM0MCSwsSMIJYKpneAz+tqDCMzBN2nmikIgV/dszAsbnhXTG8Am+IGFylnivKfzrHHMCokLbIiB/8AeNVrKUwKZVVMqa6XKqtzcHl3kkRigdCdwy0s3NZQTF8A3+5IWJi7zaeYDkD44841+DOnvRUTl7m56tzeeoA003VuNNHAHdGzvvMNBWfIR7RkAjlTwRkuJlC2mYzpVGUzJSM7Mx2iKiMrWeUxjuM4/qm2ytpmXN/u618o9a+s+pdi/Wu3/sVe/+nwH4+Tvzx//gG7W6YbwRbnBgAAAABJRU5ErkJggg==); 85 | } 86 | #comments .comment-list > li { 87 | position: relative; 88 | padding: 2rem 1.5rem 1.5rem 1.5rem; 89 | list-style-type: none; 90 | } 91 | #comments .comment-children { 92 | margin-left: 2rem; 93 | } 94 | 95 | #comments .comment-children li { 96 | padding: 0; 97 | } 98 | 99 | #comments .comment-reply { 100 | opacity: 0; 101 | } 102 | 103 | #comments .comment-list > li:hover > .comment-reply { 104 | opacity: 1; 105 | } 106 | 107 | #comments .comment-list > li:hover { 108 | background-color: rgb(245,248,250); 109 | } 110 | #comments .comment-list > li .comment-author { 111 | display: flex; 112 | } 113 | #comments .comment-list > li .comment-author span { 114 | position: relative; 115 | } 116 | #comments .comment-list > li .comment-author span img { 117 | width: 4rem; 118 | height: 4rem; 119 | border-radius: 50%; 120 | } 121 | #comments .comment-list > li .comment-author cite { 122 | padding-left: 1.5rem; 123 | font-style: normal; 124 | } 125 | #comments .comment-list > li .comment-meta { 126 | margin-left: 5.5rem; 127 | padding-bottom: .5rem; 128 | margin-top: -2rem; 129 | } 130 | #comments .comment-list > li .comment-content { 131 | word-wrap: break-word; 132 | word-break: break-all; 133 | font-size: 1.4rem; 134 | } 135 | #comments .comment-list > li .comment-content p { 136 | line-height: 1.8; 137 | letter-spacing: .1rem; 138 | } 139 | #comments .comment-list > li .comment-reply, #comments .comment-list > li .cancel-comment-reply { 140 | position: absolute; 141 | right: 1.5rem; 142 | top: 1.5rem; 143 | padding: .1rem .5rem; 144 | color: white; 145 | font-size: 1.3rem; 146 | text-align: center; 147 | cursor: pointer; 148 | background-color: var(--theme-color); 149 | border: none; 150 | border-radius: 10%; 151 | transition: all .3s ease-out; 152 | } 153 | .comment-reply a, .cancel-comment-reply a { 154 | color: white; 155 | } 156 | 157 | .secret { 158 | background: repeating-linear-gradient(145deg, #f2f2f2, #f2f2f2 0.9375rem, #fff 0, #fff 1.875rem); 159 | padding: 0.625rem 2.5rem 0.625rem 2.5rem; 160 | position: relative; 161 | } 162 | #secret-button { 163 | display: none; 164 | } 165 | .secret-label { 166 | position: relative; 167 | display: inline-block; 168 | width: 3.5rem; 169 | height: 2rem; 170 | background-color: #ccc; 171 | border: 1rem solid #ccc; 172 | border-radius: 1.8rem; 173 | cursor: pointer; 174 | margin-right: .5rem; 175 | } 176 | .secret-label .circle { 177 | position: absolute; 178 | top: -1rem; 179 | left: -1rem; 180 | transition: all 0.3s; 181 | width: 2rem; 182 | height: 2rem; 183 | border-radius: 50%; 184 | background-color: var(--theme-color); 185 | } 186 | .secret-label .on { 187 | color: #fff; 188 | display: none; 189 | text-indent: 0.625rem; 190 | } 191 | .secret-label .off { 192 | color: #fff; 193 | display: inline-block; 194 | text-indent: 3.3125rem; 195 | } 196 | #secret-button:checked + label.secret-label .circle { 197 | left: 1.1875rem; 198 | } 199 | #secret-button:checked + label.secret-label .on { 200 | display: inline-block; 201 | } 202 | #secret-button:checked + label.secret-label .off { 203 | display: none; 204 | } 205 | .comment-ua { 206 | font-size: 1.3rem; 207 | color: var(--text2); 208 | margin-left: -1rem; 209 | } 210 | /* ua标识 */ 211 | .ua-icon { 212 | display: inline-block; 213 | width: 1pc; 214 | height: 1pc; 215 | background-size: cover; 216 | background-repeat: no-repeat; 217 | vertical-align: text-top 218 | } 219 | .icon-360 { 220 | background-image: url('../img/ua/360.png') 221 | } 222 | .icon-android { 223 | background-image: url('../img/ua/android.png'); 224 | height: 1.1875rem 225 | } 226 | .icon-apple { 227 | background-image: url('../img/ua/apple.png') 228 | } 229 | .icon-baidu { 230 | background-image: url('../img/ua/baidu.png') 231 | } 232 | .icon-chrome { 233 | background-image: url('../img/ua/chrome.png') 234 | } 235 | .icon-edge { 236 | background-image: url('../img/ua/edge.png') 237 | } 238 | .icon-firefox { 239 | background-image: url('../img/ua/firefox.png') 240 | } 241 | .icon-google { 242 | background-image: url('../img/ua/google.png') 243 | } 244 | .icon-ie { 245 | background-image: url('../img/ua/ie.png') 246 | } 247 | .icon-liebao { 248 | background-image: url('../img/ua/liebao.png') 249 | } 250 | .icon-linux { 251 | background-image: url('../img/ua/linux.png') 252 | } 253 | .icon-mac { 254 | background-image: url('../img/ua/mac.png') 255 | } 256 | .icon-opera { 257 | background-image: url('../img/ua/opera.png') 258 | } 259 | .icon-qq { 260 | background-image: url('../img/ua/qq.png') 261 | } 262 | .icon-quark { 263 | background-image: url('../img/ua/quark.png') 264 | } 265 | .icon-safari { 266 | background-image: url('../img/ua/safari.png') 267 | } 268 | .icon-ubuntu { 269 | background-image: url('../img/ua/ubuntu.png') 270 | } 271 | .icon-uc { 272 | background-image: url('../img/ua/uc.png') 273 | } 274 | .icon-win1 { 275 | background-image: url('../img/ua/win1.png') 276 | } 277 | .icon-win2 { 278 | background-image: url('../img/ua/win2.png') 279 | } 280 | -------------------------------------------------------------------------------- /libs/contents.php: -------------------------------------------------------------------------------- 1 | '; 42 | } 43 | 44 | /** 45 | * 阿鲁表情回调函数 46 | * 47 | * @return string 48 | */ 49 | public static function parseAruBiaoqingCallback($match) 50 | { 51 | return ''; 52 | } 53 | 54 | /** 55 | * 蛆音娘表情回调函数 56 | * 57 | * @return string 58 | */ 59 | public static function parseQuyinBiaoqingCallback($match): string 60 | { 61 | return ''; 62 | } 63 | /** 64 | * 友链解析 65 | */ 66 | public static function parseLink($text) { 67 | $reg = '/\[links\](.*?)\[\/links\]/s'; 68 | if (preg_match($reg, $text)) { 69 | $rp = ''; 70 | $text = preg_replace($reg, $rp, $text); 71 | $pattern = '/\[(.*?)\]\[(.*?)\]\((.*?)\)\+\((.*)\)/'; 72 | $replacement = ''; 80 | return preg_replace($pattern, $replacement, $text); 81 | } else { 82 | return $text; 83 | } 84 | } 85 | 86 | /** 87 | * 回复可见 88 | * @param $text 89 | * @return mixed|string|string[]|null 90 | */ 91 | public static function parseHide($text) 92 | { 93 | $reg = '/\[hide\](.*?)\[\/hide\]/sm'; 94 | if (preg_match($reg, $text)) { 95 | if (!Typecho_Widget::widget('Widget_Archive')->is('single')) { 96 | $text = preg_replace($reg, '', $text); 97 | } 98 | $db = Typecho_Db::get(); 99 | $sql = $db->select()->from('table.comments') 100 | ->where('cid = ?', Typecho_Widget::widget('Widget_Archive')->cid) 101 | ->where('mail = ?', Typecho_Widget::widget('Widget_Archive')->remember('mail', true)) 102 | ->limit(1); 103 | $result = $db->fetchAll($sql); 104 | // 楼层回复,目前只能通过登录用户可见 105 | if (Typecho_Widget::widget('Widget_User')->hasLogin() || $result) { 106 | $text = preg_replace("/\[hide\](.*?)\[\/hide\]/sm", '
    $1
    ', $text); 107 | } 108 | else{ 109 | $text = preg_replace("/\[hide\](.*?)\[\/hide\]/sm",'
    此处内容需要评论回复后方可阅读。
    ',$text); 110 | } 111 | } 112 | return $text; 113 | } 114 | 115 | /** 116 | * 新标签打开 117 | * @param $content 118 | * @return string|string[]|null 119 | */ 120 | public static function blankReplace($content) 121 | { 122 | $reg = '##sm'; 123 | if (preg_match($reg, $content)) { 124 | $content = preg_replace($reg, '', $content); 125 | return $content; 126 | } 127 | return $content; 128 | } 129 | 130 | 131 | /** 132 | * BILIBILI视频插入 133 | * @param $text 134 | * @return string|string[]|null 135 | */ 136 | public static function biliVideo($text) 137 | { 138 | $reg = '/\[bilibili bv="(.+?)" p="(.+?)"]/sm'; 139 | if (preg_match($reg, $text)) { 140 | $replacement = ''; 141 | return preg_replace($reg, $replacement, $text); 142 | } 143 | return $text; 144 | } 145 | 146 | /** 147 | * 插入其它视频 148 | * @param $text 149 | * @return string|string[]|null 150 | */ 151 | public static function video($text) 152 | { 153 | $reg = '/\[video src="(.+?)"]/sm'; 154 | if (preg_match($reg, $text)) { 155 | $replacement = ''; 156 | return preg_replace($reg, $replacement, $text); 157 | } 158 | return $text; 159 | } 160 | 161 | /** 162 | * 文章跳转 163 | * @param $text 164 | * @return mixed|string|string[]|null 165 | */ 166 | public static function cidToContent($text) 167 | { 168 | $reg = '/\[cid="(.+?)"]/'; 169 | if (preg_match_all($reg, $text, $matches)) { 170 | $db = Typecho_Db::get(); 171 | foreach ($matches[1] as $match) { 172 | $articleArr = $db->fetchAll($db->select()->from('table.contents') 173 | ->where('status = ?','publish') 174 | ->where('type = ?', 'post') 175 | ->where('cid = ?',$match) 176 | ); 177 | $val = Typecho_Widget::widget('Widget_Abstract_Contents')->push($articleArr[0]); 178 | 179 | $replacement = '
    180 |
    181 |
    ' . $val['title'] . '
    182 |

    更新时间:'. date('Y-m-d H:i:s', $val['modified']) .'

    183 | 跳转 184 |
    '; 185 | $text = preg_replace($reg, $replacement, $text, 1); 186 | } 187 | } 188 | return $text; 189 | } 190 | 191 | /** 192 | * 解析Tip 193 | * @param $text 194 | * @return string|string[]|null 195 | */ 196 | public static function parseTip($text) 197 | { 198 | return preg_replace('/\[tip type="(.*?)"\](.*?)\[\/tip\]/s', '
    ${2}
    ', $text); 199 | 200 | } 201 | 202 | /** 203 | * 相册 204 | * @param $text 205 | * @return string|string[]|null 206 | */ 207 | public static function parsePhoto($text) 208 | { 209 | return preg_replace('/\[photo\](.*?)\[\/photo\]/ism', '
    ${1}
    ', $text); 210 | } 211 | 212 | /** 213 | * tab 214 | * @param $text 215 | * @return string|string[]|null 216 | */ 217 | public static function parseTab($text) 218 | { 219 | $text = preg_replace_callback('/\[tabs\](.*?)\[\/tabs\]/ism', function ($text) { 220 | $tabname = ''; 221 | preg_match_all('/label="(.*?)"\]/i', $text[1], $tabnamearr); 222 | for ($i = 0; $i < count($tabnamearr[1]); $i++) { 223 | if ($i === 0) { 224 | $tabname .= '' . $tabnamearr[1][$i] . ''; 225 | } else { 226 | $tabname .= '' . $tabnamearr[1][$i] . ''; 227 | } 228 | } 229 | $tabcon = ''; 230 | preg_match_all('/"\](.*?)\[\//i', $text[1], $tabconarr); 231 | for ($i = 0; $i < count($tabconarr[1]); $i++) { 232 | if ($i === 0) { 233 | $tabcon .= '
    ' . $tabconarr[1][$i] . '
    '; 234 | } else { 235 | $tabcon .= '
    ' . $tabconarr[1][$i] . '
    '; 236 | } 237 | } 238 | return '
    239 | 240 |
    ' . $tabcon . '
    241 |
    '; 242 | }, $text); 243 | return $text; 244 | } 245 | 246 | /** 247 | * 展开隐藏 248 | * @param $text 249 | * @return string|string[]|null 250 | */ 251 | public static function parseCollapse($text) 252 | { 253 | $text = preg_replace_callback('/\[collapse\](.*?)\[\/collapse\]/ism', function ($text) { 254 | return '
    ' . $text[1] . '
    '; 255 | }, $text); 256 | $text = preg_replace_callback('/\[collapse-item label="(.*?)"\](.*?)\[\/collapse-item\]/ism', function ($text) { 257 | return '
    258 | ' . $text[1] . ' 259 | 260 |
    261 |
    ' . $text[2] . '
    '; 262 | }, $text); 263 | return $text; 264 | } 265 | 266 | /** 267 | * 图片懒加载 268 | * @param $text 269 | * @return string|string[]|null 270 | */ 271 | public static function addLazyLoad($text) 272 | { 273 | return preg_replace('//', '', $text); 274 | } 275 | } 276 | -------------------------------------------------------------------------------- /assets/css/extend/OwO.min.css: -------------------------------------------------------------------------------- 1 | .OwO{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.OwO:hover .OwO-logo{color:#444}.OwO.OwO-open .OwO-logo{border-bottom:none;color:#444;margin-bottom:10px}.OwO.OwO-open .OwO-logo span{-webkit-animation:5s ease-in-out 0s infinite normal none running a;animation:5s ease-in-out 0s infinite normal none running a}.OwO.OwO-open .OwO-body{display:block}.OwO.OwO-up .OwO-body{top:inherit;bottom:21px;border-radius:4px 4px 4px 0px}.OwO.OwO-up .OwO-body .OwO-bar .OwO-packages li:nth-child(1){border-radius:0px}.OwO.OwO-up.OwO-open .OwO-logo{border-right:1px solid #ddd;border-bottom:1px solid #ddd;border-left:1px solid #ddd;-o-border-image:initial;border-image:initial;border-top:none}.OwO .OwO-logo{position:relative;display:inline-block;color:#888;cursor:pointer;z-index:2}.OwO .OwO-logo span{display:flex;align-items:center;height:32px;line-height:32px}.OwO .OwO-logo span svg{width:20px;height:20px;margin-right:5px}.OwO .OwO-body{display:none;background:#fff;z-index:1;border-radius:4px}.OwO .OwO-body .OwO-items{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:none;padding:10px;margin:0px;overflow-y:auto;font-size:0px;-ms-scroll-chaining:none;overscroll-behavior:none;-webkit-overflow-scrolling:touch}.OwO .OwO-body .OwO-items .OwO-item{width:calc(100% / 10);list-style-type:none;margin:5px;text-align:center;border-radius:5px;display:inline-block;font-size:12px;line-height:14px;cursor:pointer;transition:all 0.3s ease 0s}.OwO .OwO-body .OwO-items .OwO-item:hover{background:#eee;box-shadow:rgba(0,0,0,0.14) 0px 2px 2px 0px,rgba(0,0,0,0.2) 0px 3px 1px -2px,rgba(0,0,0,0.12) 0px 1px 5px 0px;-webkit-animation:5s ease-in-out 0s infinite normal none running a;animation:5s ease-in-out 0s infinite normal none running a}.OwO .OwO-body .OwO-items-emoji .OwO-item{font-size:20px;line-height:19px}.OwO .OwO-body .OwO-items-image .OwO-item img{max-width:100%}.OwO .OwO-body .OwO-items-emoticon .OwO-item{width:25%;text-align:center}.OwO .OwO-body .OwO-items-show{display:block}.OwO .OwO-body .OwO-bar{width:100%;height:30px;border-top:1px solid #ddd;background:#fff;border-radius:0px 0px 4px 4px;color:#444}.OwO .OwO-body .OwO-bar .OwO-packages{margin:0px;padding:0px;font-size:0px}.OwO .OwO-body .OwO-bar .OwO-packages li{list-style-type:none;display:inline-block;line-height:29px;font-size:14px;padding:0px 10px;cursor:pointer}.OwO .OwO-body .OwO-bar .OwO-packages li:nth-child(1){border-radius:0px 0px 0px 3px}.OwO .OwO-body .OwO-bar .OwO-packages li:hover{background:#eee}.OwO .OwO-body .OwO-bar .OwO-packages .OwO-package-active{background:#eee;transition:all 0.3s ease 0s}@-webkit-keyframes a{2%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}4%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}6%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}8%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}10%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}12%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}14%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}16%{-webkit-transform:translateY(-0.5px) rotate(-1.5deg);transform:translateY(-0.5px) rotate(-1.5deg)}18%{-webkit-transform:translateY(0.5px) rotate(-1.5deg);transform:translateY(0.5px) rotate(-1.5deg)}20%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}22%{-webkit-transform:translateY(0.5px) rotate(-1.5deg);transform:translateY(0.5px) rotate(-1.5deg)}24%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}26%{-webkit-transform:translateY(0.5px) rotate(0.5deg);transform:translateY(0.5px) rotate(0.5deg)}28%{-webkit-transform:translateY(0.5px) rotate(1.5deg);transform:translateY(0.5px) rotate(1.5deg)}30%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}32%,34%{-webkit-transform:translateY(1.5px) rotate(-0.5deg);transform:translateY(1.5px) rotate(-0.5deg)}36%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}38%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}40%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}42%{-webkit-transform:translateY(2.5px) rotate(-1.5deg);transform:translateY(2.5px) rotate(-1.5deg)}44%{-webkit-transform:translateY(1.5px) rotate(0.5deg);transform:translateY(1.5px) rotate(0.5deg)}46%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}48%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}50%{-webkit-transform:translateY(0.5px) rotate(0.5deg);transform:translateY(0.5px) rotate(0.5deg)}52%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}54%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}56%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}58%{-webkit-transform:translateY(0.5px) rotate(2.5deg);transform:translateY(0.5px) rotate(2.5deg)}60%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}62%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}64%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}66%{-webkit-transform:translateY(1.5px) rotate(-0.5deg);transform:translateY(1.5px) rotate(-0.5deg)}68%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}70%{-webkit-transform:translateY(1.5px) rotate(0.5deg);transform:translateY(1.5px) rotate(0.5deg)}72%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}74%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}76%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}78%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}80%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}82%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}84%{-webkit-transform:translateY(1.5px) rotate(2.5deg);transform:translateY(1.5px) rotate(2.5deg)}86%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}88%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}90%{-webkit-transform:translateY(2.5px) rotate(-0.5deg);transform:translateY(2.5px) rotate(-0.5deg)}92%{-webkit-transform:translateY(0.5px) rotate(-0.5deg);transform:translateY(0.5px) rotate(-0.5deg)}94%{-webkit-transform:translateY(2.5px) rotate(0.5deg);transform:translateY(2.5px) rotate(0.5deg)}96%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}98%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}0%,100%{-webkit-transform:translate(0px) rotate(0deg);transform:translate(0px) rotate(0deg)}}@keyframes a{2%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}4%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}6%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}8%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}10%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}12%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}14%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}16%{-webkit-transform:translateY(-0.5px) rotate(-1.5deg);transform:translateY(-0.5px) rotate(-1.5deg)}18%{-webkit-transform:translateY(0.5px) rotate(-1.5deg);transform:translateY(0.5px) rotate(-1.5deg)}20%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}22%{-webkit-transform:translateY(0.5px) rotate(-1.5deg);transform:translateY(0.5px) rotate(-1.5deg)}24%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}26%{-webkit-transform:translateY(0.5px) rotate(0.5deg);transform:translateY(0.5px) rotate(0.5deg)}28%{-webkit-transform:translateY(0.5px) rotate(1.5deg);transform:translateY(0.5px) rotate(1.5deg)}30%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}32%,34%{-webkit-transform:translateY(1.5px) rotate(-0.5deg);transform:translateY(1.5px) rotate(-0.5deg)}36%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}38%{-webkit-transform:translateY(1.5px) rotate(-1.5deg);transform:translateY(1.5px) rotate(-1.5deg)}40%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}42%{-webkit-transform:translateY(2.5px) rotate(-1.5deg);transform:translateY(2.5px) rotate(-1.5deg)}44%{-webkit-transform:translateY(1.5px) rotate(0.5deg);transform:translateY(1.5px) rotate(0.5deg)}46%{-webkit-transform:translateY(-1.5px) rotate(2.5deg);transform:translateY(-1.5px) rotate(2.5deg)}48%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}50%{-webkit-transform:translateY(0.5px) rotate(0.5deg);transform:translateY(0.5px) rotate(0.5deg)}52%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}54%{-webkit-transform:translateY(-1.5px) rotate(1.5deg);transform:translateY(-1.5px) rotate(1.5deg)}56%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}58%{-webkit-transform:translateY(0.5px) rotate(2.5deg);transform:translateY(0.5px) rotate(2.5deg)}60%{-webkit-transform:translateY(2.5px) rotate(2.5deg);transform:translateY(2.5px) rotate(2.5deg)}62%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}64%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}66%{-webkit-transform:translateY(1.5px) rotate(-0.5deg);transform:translateY(1.5px) rotate(-0.5deg)}68%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}70%{-webkit-transform:translateY(1.5px) rotate(0.5deg);transform:translateY(1.5px) rotate(0.5deg)}72%{-webkit-transform:translateY(2.5px) rotate(1.5deg);transform:translateY(2.5px) rotate(1.5deg)}74%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}76%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}78%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}80%{-webkit-transform:translateY(1.5px) rotate(1.5deg);transform:translateY(1.5px) rotate(1.5deg)}82%{-webkit-transform:translateY(-0.5px) rotate(0.5deg);transform:translateY(-0.5px) rotate(0.5deg)}84%{-webkit-transform:translateY(1.5px) rotate(2.5deg);transform:translateY(1.5px) rotate(2.5deg)}86%{-webkit-transform:translateY(-1.5px) rotate(-1.5deg);transform:translateY(-1.5px) rotate(-1.5deg)}88%{-webkit-transform:translateY(-0.5px) rotate(2.5deg);transform:translateY(-0.5px) rotate(2.5deg)}90%{-webkit-transform:translateY(2.5px) rotate(-0.5deg);transform:translateY(2.5px) rotate(-0.5deg)}92%{-webkit-transform:translateY(0.5px) rotate(-0.5deg);transform:translateY(0.5px) rotate(-0.5deg)}94%{-webkit-transform:translateY(2.5px) rotate(0.5deg);transform:translateY(2.5px) rotate(0.5deg)}96%{-webkit-transform:translateY(-0.5px) rotate(1.5deg);transform:translateY(-0.5px) rotate(1.5deg)}98%{-webkit-transform:translateY(-1.5px) rotate(-0.5deg);transform:translateY(-1.5px) rotate(-0.5deg)}0%,100%{-webkit-transform:translate(0px) rotate(0deg);transform:translate(0px) rotate(0deg)}} -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. --------------------------------------------------------------------------------