创建存储库

This commit is contained in:
lxy 2020-05-31 19:04:57 +08:00
commit 80ad2d2d51
88 changed files with 11360 additions and 0 deletions

28
404.ftl Normal file
View File

@ -0,0 +1,28 @@
<#--
@package Akina
-->
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title itemprop="name">未找到页面 - ${blog_title!}</title>
<@global.head />
<#include "inc/decorate.ftl">
<link rel='stylesheet' id='siren-css' href='${theme_base!}/style.css?ver=2.0.6.170420' type='text/css' media='all' />
</head>
<body class="error404 hfeed">
<section class="error-404 not-found">
<div class="error-img">
<img src="${theme_base!}/images/404.jpg">
</div>
<div class="err-button back">
<a id="golast" href=javascript:history.go(-1);>返回上一页</a>
<a id="gohome" href="${blog_url!}">返回主页</a>
</div>
</section>
</body>

1
README.md Normal file
View File

@ -0,0 +1 @@
待更新

45
archives.ftl Normal file
View File

@ -0,0 +1,45 @@
<#---
@package Akina
-->
<#include "header.ftl">
<@header title="文章归档 - ${blog_title!}">
<#if (settings.patternimg!true) && (settings.archives_patternimg?? && settings.archives_patternimg!='')>
<div class="pattern-center">
<div class="pattern-attachment-img" style="background-image: url('${settings.archives_patternimg!}')"> </div>
<header class="pattern-header">
<h1 class="entry-title">文章归档</h1>
</header>
</div>
<#else>
<div class="blank"></div>
</#if>
</@header>
<article class="post-item page type-page status-publish hentry">
<div id="archives-temp">
<#if !(settings.patternimg!true) || !(settings.archives_patternimg?? && settings.archives_patternimg!='')>
<h2>文章归档</h2>
</#if>
<div id="archives-content">
<@postTag method="archiveMonth">
<#list archives as archive>
<div class="archive-title" id="arti-${archive.year?c}-${archive.month!}">
<span class="ar-time"><i class="iconfont">&#xe74a;</i></span>
<h3>${archive.year?c}-${archive.month!}</h3>
<div class="archives archives-${archive_index}" id="monlist" data-date="${archive.year?c}-${archive.month!}" style="display: block; overflow: hidden;">
<#list archive.posts as post>
<span class="ar-circle"></span>
<div class="arrow-left-ar"></div>
<div class="brick">
<a href="${post.fullPath!}">
<span class="time"><i class="iconfont">&#xe65f;</i>${post.createTime?string('MM-dd')}</span>${post.title!}
</a>
</div>
</#list>
</div>
</div>
</#list>
</@postTag>
</div>
</div>
</article>
<#include "footer.ftl">

60
category.ftl Normal file
View File

@ -0,0 +1,60 @@
<#--
@package Akina
-->
<#include "header.ftl">
<@header title="分类:${category.name!} - ${blog_title!}">
<#if (settings.patternimg!true) && (settings.category_patternimg?? && settings.category_patternimg!='')>
<div class="pattern-center">
<div class="pattern-attachment-img" style="background-image: url('${settings.category_patternimg!}')"> </div>
<header class="pattern-header">
<h1 class="cat-title">分类:${category.name!}</h1>
<span class="cat-des">${category.description!}</span>
</header>
</div>
<#else>
<div class="blank"></div>
</#if>
</@header>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<#if posts?? && posts.content?size gt 0>
<#if !(settings.patternimg!true) || !(settings.category_patternimg?? && settings.category_patternimg!='')>
<header class="page-header">
<h1 class="cat-title">${category.name!}</h1>
<span class="cat-des">
${category.description!}
</span>
</header><!-- .page-header -->
</#if>
<#-- Start the Loop -->
<#list posts.content as post>
<#include "tpl/content.ftl">
</#list>
<div class="clearer"></div>
<#else>
<#include "tpl/content-none.ftl">
</#if>
</main><!-- #main -->
<@paginationTag method="categoryPosts" page="${posts.number}" total="${posts.totalPages}" display="3" slug="${category.slug!}">
<#if (settings.pagenav_style!'ajax') == 'ajax'>
<div id="pagination">
<#if pagination.hasNext>
<a href="${pagination.nextPageFullPath!}" class="">下一页</a>
<#else>
<span>没有更多文章了</span>
</#if>
</div>
<#else>
<nav class="navigator">
<#if pagination.hasPrev>
<a href="${pagination.prevPageFullPath!}"><i class="iconfont">&#xe679;</i></a>
</#if>
<#if pagination.hasNext>
<a href="${pagination.nextPageFullPath!}"><i class="iconfont">&#xe6a3;</i></a>
</#if>
</nav>
</#if>
</@paginationTag>
</div><!-- #primary -->
<#include "footer.ftl">

23
comments.ftl Normal file
View File

@ -0,0 +1,23 @@
<#--
COMMENTS TEMPLATE
-->
<#macro comment target,type>
<#if !target.disallowComment!false>
<script src="//cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.min.js"></script>
<script src="${options.comment_internal_plugin_js!'//cdn.jsdelivr.net/gh/halo-dev/halo-comment@latest/dist/halo-comment.min.js'}"></script>
<section id="comments" class="comments">
<div class="commentwrap comments-hidden">
<div class="notification"><i class="iconfont">&#xe731;</i>查看评论 -
<span class="noticom">${target.commentCount!0} 条评论 </span>
</div>
</div>
<div class="comments-main">
<h3 id="comments-list-title">Comments | <span class="noticom">${target.commentCount!0} 条评论 </span></h3>
<div class="commentwrap">
<halo-comment id="${target.id?c}" type="${type}"/>
</div>
</div>
</section>
</#if>
</#macro>

118
footer.ftl Normal file
View File

@ -0,0 +1,118 @@
<#--
/**
* The template for displaying the footer.
*
* Contains the closing of the #content div and all content after.
*
* @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
*
* @package Akina
*/
-->
</div><!-- #content -->
<#include "comments.ftl">
<#if is_post??>
<@comment post,"post" />
<#elseif is_sheet??>
<@comment sheet,"sheet" />
</#if>
</div><!-- #page Pjax container-->
<footer id="colophon" class="site-footer" role="contentinfo">
<div class="site-info">
<div class="footertext">
<p class="foo-logo"
style="background-image: url('${theme_base!}/images/f-logo.png');"></p>
<p>
<@global.footer />
</p>
</div>
<div class="footer-device">
&nbsp; <a href="http://www.akina.pw/themeakina" rel="designer" target="_blank">Theme</a> &nbsp; <a href="https://halo.run/" target="_blank" rel="nofollow">Halo</a> &nbsp;
</div>
</div><!-- .site-info -->
</footer><!-- #colophon -->
<div class="openNav">
<div class="iconflat">
<div class="icon"></div>
</div>
<div class="site-branding">
<#if blog_logo?? && blog_logo!=''>
<div class="site-title">
<a href="${blog_url!}">
<img src="${blog_logo!}">
</a>
</div>
<#else>
<h1 class="site-title"><a href="${blog_url!}">${blog_title!}</a></h1>
</#if>
</div>
</div><!-- m-nav-bar -->
</section><!-- #section -->
<!-- m-nav-center -->
<div id="mo-nav">
<div class="m-avatar">
<#if user.avatar??>
<img src="${user.avatar!}">
<#else>
<img src="${theme_base!}/images/avatar.jpg">
</#if>
</div>
<div class="m-search">
<form class="m-search-form" method="get" action="/search" role="search">
<input class="m-search-input" type="search" name="keyword" placeholder="搜索..." required>
</form>
</div>
<ul id="menu-menu-1" class="menu">
<@menuTag method="tree">
<#list menus?sort_by('priority') as menu>
<li>
<a href="${menu.url!}">${menu.name!}</a>
<#if menu.children?? && menu.children?size gt 0>
<ul class="sub-menu">
<#list menu.children as child>
<li><a href="${child.url!}">${child.name}</a></li>
</#list>
</ul>
</#if>
</li>
</#list>
</@menuTag>
</ul>
</div><!-- m-nav-center end -->
<a href="#" class="cd-top"></a>
<!-- search start -->
<form class="js-search search-form search-form--modal" method="get" action="/search" role="search">
<div class="search-form__inner">
<div>
<p class="micro mb-">输入后按回车搜索 ...</p>
<i class="iconfont">&#xe65c;</i>
<input class="text-input" type="search" name="keyword" placeholder="Search" required>
</div>
</div>
<div class="search_close"></div>
</form>
<!-- search end -->
<script type='text/javascript' src='${theme_base!}/js/jquery.min.js?ver=2.0.6.170420'></script>
<script type='text/javascript' src='${theme_base!}/js/jquery.pjax.js?ver=2.0.6.170420'></script>
<script type='text/javascript' src='${theme_base!}/js/input.min.js?ver=2.0.6.170420'></script>
<script type='text/javascript'>
/* <![CDATA[ */
var Poi = {
"pjax":"${(settings.poi_pjax!true)?string('true','')}",
"windowheight":"${(!(settings.focus_height!true))?string('fixed','auto')}",
"codelamp":"open",
"ajaxurl":"${blog_url!}",
"formpostion":"bottom"
};
/* ]]> */
</script>
<#if is_post?? || is_sheet??>
<script type="text/javascript" src="${theme_base!}/plugins/prism/js/prism.js"></script>
<link href="${theme_base!}/plugins/prism/css/prism-${settings.code_pretty!'Default'}.css" type="text/css" rel="stylesheet" />
</#if>
<script type='text/javascript' src='${theme_base!}/js/app.js?ver=2.0.6.170420'></script>
<div class="site-statistics">
<@global.statistics />
</div>
</body>
</html>

3
functions.ftl Normal file
View File

@ -0,0 +1,3 @@
<#macro get_random_bg_url>
</#macro>

95
header.ftl Normal file
View File

@ -0,0 +1,95 @@
<#--
@package Akina
-->
<#macro header title>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title itemprop="name">${title!}</title>
<meta name="description" content="${meta_description!}"/>
<meta name="keywords" content="${meta_keywords!}"/>
<@global.head />
<link rel='stylesheet' id='siren-css' href='${theme_base!}/style.css?ver=2.0.6.170420' type='text/css' media='all' />
<#include "inc/decorate.ftl">
<script type="text/javascript">
if (!!window.ActiveXObject || "ActiveXObject" in window) { //is IE?
alert('请抛弃万恶的IE系列浏览器吧。');
}
</script>
</head>
<body class="hfeed">
<section id="main-container">
<#if settings.head_focus!true>
<div class="headertop ${settings.focus_img_filter!'filter-nothing'}">
<#include "layouts/imgbox.ftl">
</div>
</#if>
<div id="page" class="site wrapper">
<header class="site-header" role="banner">
<div class="site-top">
<div class="site-branding">
<#if blog_logo?? && blog_logo!=''>
<div class="site-title">
<a href="${blog_url!}">
<img src="${blog_logo!}">
</a>
</div>
<#else>
<h1 class="site-title"><a href="${blog_url!}">${blog_title!}</a></h1>
<!-- logo end -->
</#if>
</div><!-- .site-branding -->
<div class="header-user-avatar">
<img src="${user.avatar!}" width="30" height="30">
<div class="header-user-menu">
<div class="herder-user-name">Blogger
<div class="herder-user-name-u">${user.nickname!}</div>
</div>
<#-- <div class="user-menu-option">-->
<#-- <a href="${context!}/admin/index.html#/dashboard" target="_blank">管理中心</a>-->
<#-- <a href="${context!}/admin/index.html#/posts/write" target="_blank">撰写文章</a>-->
<#-- <a href="${context!}/admin/index.html#/user/profile" target="_blank">个人资料</a>-->
<#-- </div>-->
</div>
</div>
<#if settings.top_search!true>
<div class="searchbox"><i class="iconfont js-toggle-search iconsearch">&#xe65c;</i></div>
</#if>
<div class="lower">
<#if !settings.shownav!false>
<div id="show-nav" class="showNav">
<div class="line line1"></div>
<div class="line line2"></div>
<div class="line line3"></div>
</div>
</#if>
<nav <#if settings.shownav!false>class="navbar"</#if>>
<ul id="menu-menu-1" class="menu">
<@menuTag method="tree">
<#list menus?sort_by('priority') as menu>
<li>
<a href="${menu.url!}" target="${menu.target!}">${menu.name}</a>
<#if menu.children?? && menu.children?size gt 0>
<ul class="sub-menu">
<#list menu.children as child>
<a href="${child.url!}" target="${child.target!}">${child.name}</a>
</#list>
</ul>
</#if>
</li>
</#list>
</@menuTag>
</ul>
</nav>
<!-- #site-navigation -->
</div>
</div>
</header><!-- #masthead -->
<#nested />
<div id="content" class="site-content">
</#macro>

BIN
images/404.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
images/avatar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

20
images/cd-arrow.svg Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="8px" height="11px"
viewBox="0 0 8 11" enable-background="new 0 0 8 11" xml:space="preserve">
<title>Imported Layers</title>
<description>Created with Sketch.</description>
<g id="Homepage" sketch:type="MSPage">
<g id="homepage-products-new" transform="translate(-1104.000000, -440.000000)" sketch:type="MSArtboardGroup">
<g id="header" sketch:type="MSLayerGroup">
<g id="img_x2B_msg-4" sketch:type="MSShapeGroup">
<g id="learn-more" transform="translate(957.000000, 417.000000)">
<path id="Imported-Layers" fill="#879193" d="M155,28.5l-6.1,5.5l-1.8-1.6l4.3-3.8l-4.3-3.8l1.9-1.7L155,28.5"/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
images/f-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

BIN
images/gotop.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
images/grid.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

BIN
images/hd.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

BIN
images/none.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
images/postload.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
images/random/d-1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/random/d-10.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/random/d-2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/random/d-3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/random/d-4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/random/d-5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/random/d-6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/random/d-7.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/random/d-8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/random/d-9.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/sns/bilibili.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

BIN
images/sns/csdn.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 B

BIN
images/sns/douban.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

BIN
images/sns/facebook.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 B

BIN
images/sns/github.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

BIN
images/sns/googleplus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

BIN
images/sns/heart.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

BIN
images/sns/jianshu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

BIN
images/sns/lofter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

BIN
images/sns/qq.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
images/sns/qzone.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 723 B

BIN
images/sns/sina.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 979 B

BIN
images/sns/twitter.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

BIN
images/sns/wangyiyun.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 949 B

BIN
images/sns/wechat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 793 B

BIN
images/sns/youku.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

BIN
images/sns/zhihu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

BIN
images/temp.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

44
inc/decorate.ftl Normal file
View File

@ -0,0 +1,44 @@
<@compress single_line=true>
<style type="text/css">
<#if settings.shownav!false>
.site-top .lower nav {
display: block !important;
}
</#if>
<#if settings.theme_skin??>
.author-profile i, .post-like a, .post-share .show-share, .sub-text, .we-info a, span.sitename, .post-more i:hover, #pagination a:hover, .post-content a:hover, .float-content i:hover {
color: ${settings.theme_skin!}
}
.feature i, .feature-title span, .download, .navigator i:hover, .links ul li:before, .ar-time i, span.ar-circle, .object, .comment .comment-reply-link, .siren-checkbox-radio:checked + .siren-checkbox-radioInput:after {
background: ${settings.theme_skin!}
}
::-webkit-scrollbar-thumb {
background: ${settings.theme_skin!}
}
.download, .navigator i:hover, .link-title, .links ul li:hover, #pagination a:hover, .comment-respond input[type='submit']:hover {
border-color: ${settings.theme_skin!}
}
.entry-content a:hover, .site-info a:hover, .comment h4 a, #comments-navi a.prev, #comments-navi a.next, .comment h4 a:hover, .site-top ul li a:hover, .entry-title a:hover, #archives-temp h3, span.page-numbers.current, .sorry li a:hover, .site-title a:hover, i.iconfont.js-toggle-search.iconsearch:hover, .comment-respond input[type='submit']:hover {
color: ${settings.theme_skin!}
}
</#if>
<#if settings.site_custom_style??>
${settings.site_custom_style!}
</#if>
<#if (settings.list_type!'round') == 'square'>
.feature img {
border-radius: 0;!important;
}
.feature i {
border-radius: 0;!important;
}
</#if>
</style>
</@compress>

BIN
inc/fonts/iconfont.eot Normal file

Binary file not shown.

226
inc/fonts/iconfont.svg Normal file
View File

@ -0,0 +1,226 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Mon Apr 25 21:38:11 2016
By admin
</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024" >
<font-face
font-family="iconfont"
font-weight="500"
font-stretch="normal"
units-per-em="1024"
panose-1="2 0 6 3 0 0 0 0 0 0"
ascent="896"
descent="-128"
x-height="792"
bbox="0 -148 1024 832.4"
underline-thickness="50"
underline-position="-100"
unicode-range="U+0078-E791"
/>
<missing-glyph horiz-adv-x="374"
d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
<glyph glyph-name=".notdef" horiz-adv-x="374"
d="M34 0v682h272v-682h-272zM68 34h204v614h-204v-614z" />
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn" horiz-adv-x="341"
/>
<glyph glyph-name="x" unicode="x" horiz-adv-x="1001"
d="M281 543q-27 -1 -53 -1h-83q-18 0 -36.5 -6t-32.5 -18.5t-23 -32t-9 -45.5v-76h912v41q0 16 -0.5 30t-0.5 18q0 13 -5 29t-17 29.5t-31.5 22.5t-49.5 9h-133v-97h-438v97zM955 310v-52q0 -23 0.5 -52t0.5 -58t-10.5 -47.5t-26 -30t-33 -16t-31.5 -4.5q-14 -1 -29.5 -0.5
t-29.5 0.5h-32l-45 128h-439l-44 -128h-29h-34q-20 0 -45 1q-25 0 -41 9.5t-25.5 23t-13.5 29.5t-4 30v167h911zM163 247q-12 0 -21 -8.5t-9 -21.5t9 -21.5t21 -8.5q13 0 22 8.5t9 21.5t-9 21.5t-22 8.5zM316 123q-8 -26 -14 -48q-5 -19 -10.5 -37t-7.5 -25t-3 -15t1 -14.5
t9.5 -10.5t21.5 -4h37h67h81h80h64h36q23 0 34 12t2 38q-5 13 -9.5 30.5t-9.5 34.5q-5 19 -11 39h-368zM336 498v228q0 11 2.5 23t10 21.5t20.5 15.5t34 6h188q31 0 51.5 -14.5t20.5 -52.5v-227h-327z" />
<glyph glyph-name="uniE604" unicode="&#xe604;"
d="M274 332l-2 4l-1 4v3v3v4v4l1 4l1 5l2 5l2 5l2 5l4 6v4l1 3v5l2 6l2 6l1 3l1 2l2 3l2 2v4v4v6l1 7l1 8l2 10l3 10l2 6l2 6l3 5l2 7l3 6l3 6l4 7l5 7l2 4l2 3l5 7l5 7l6 7l6 7l6 7l7 7l9 8l5 4l6 6l7 4l7 4l7 4l8 3l8 4l8 3l8 3l9 2l9 2l9 2l9 2l9 1l10 1l9 1h10h9h10
l10 -2l10 -1l10 -1l9 -2l10 -2l9 -2l10 -3l9 -3l9 -4l9 -4l8 -4l9 -5l8 -5l7 -5l3 -3l3 -2l7 -5l5 -6l6 -5l5 -6l5 -6l5 -6l3 -7l4 -6l4 -6l3 -6l6 -13l2 -6l2 -6l3 -7l1 -6l2 -5l1 -6l3 -11l2 -10l2 -9l1 -8l1 -11l1 -2l1 -2l4 -6l2 -4l2 -4l3 -4l2 -6l1 -5l2 -6l1 -6l1 -3
v-4v-3v-4v-4l-1 -4l-2 -7l-2 -4l-1 -4v-1l1 -1l1 -4l9 -12l7 -10l3 -6l4 -7l4 -8l5 -8l4 -9l5 -10l3 -7l2 -6l2 -6l3 -6l1 -7l2 -5l2 -12l2 -11l1 -11v-5v-5v-4l-1 -5l-1 -9l-2 -8l-2 -7l-1 -3l-1 -4l-2 -2l-2 -3l-1 -2l-2 -3l-2 -2l-2 -1l-2 -1l-3 -1l-1 -1h-2h-1l-2 1
l-3 1l-1 1l-2 1l-2 2l-1 2l-3 3l-4 4l-2 5l-3 4l-2 4l-4 7l-4 8l-1 1l-2 -2l-1 -2l-2 -2l-2 -8l-5 -11l-5 -13l-4 -7l-4 -6l-5 -8l-6 -8l-2 -3l-4 -4l-7 -7v-1l1 -1l4 -2l16 -8l7 -4l7 -4l6 -4l6 -5l3 -2l2 -3l2 -3l2 -3l1 -3l1 -3l1 -3v-3v-2v-2l-1 -3l-1 -2l-1 -1l-1 -2
l-3 -4l-2 -3l-2 -3l-2 -2l-4 -3l-5 -3l-6 -2l-5 -3l-7 -2l-3 -1l-3 -1l-7 -2l-8 -1l-7 -2l-9 -1l-8 -1l-9 -1h-9h-9h-9l-10 1l-9 1l-10 1l-10 1l-10 1l-10 3l-10 2l-9 3l-10 3l-10 3l-5 2l-5 1l-3 1l-2 1h-4h-4l-10 1h-5l-6 1l-4 -4l-5 -3l-7 -4l-8 -4l-5 -2l-5 -2l-11 -5
l-6 -1l-7 -2l-8 -2h-6l-6 -1h-6l-7 -1h-7h-7h-15l-17 1l-16 1l-8 1l-7 2l-8 1l-8 1l-7 3l-7 1l-6 3l-6 2l-6 3l-4 3l-5 3l-2 2l-2 2l-2 2l-1 2l-2 2l-1 2l-1 5l-1 2v2v3v2v3l1 3v1v4v3l1 3l1 3l2 4l2 2l1 2l3 3l2 2l3 2l2 1l3 1l3 2l3 2l4 1l4 1l4 1h4l5 1h5l2 1h1v1l-1 1
l-3 2l-7 6l-5 4l-5 5l-6 5l-6 7l-6 8l-3 4l-3 4l-3 5l-3 6l-3 5l-2 6l-3 6l-3 7l-2 6l-2 8h-1v1h-1l-1 -1l-1 -1v-2l-1 -1l-1 -3l-3 -6l-2 -3l-3 -3l-2 -4l-4 -4l-3 -4l-4 -3l-3 -3l-4 -3l-5 -3l-4 -1l-5 -2h-5h-1h-1l-1 2l-1 1l-2 5l-1 2l-2 4l-1 4v3l-2 8v5v5v11v12l1 6
l1 7l1 6l2 7l2 7l2 7l3 7l3 7l4 7l3 8l4 7l5 7l5 7l5 8l5 5l5 7l6 6l3 3l3 3l5 4l5 5l8 7l6 4z" />
<glyph glyph-name="uniE607" unicode="&#xe607;"
d="M127 746h770v-86h-770v86zM830 230v339h-636v-339h636zM286 483h453v-166h-453v166zM693 35q41 64 77 147l-92 34q-36 -99 -84 -181h-161q-40 106 -91 181l-85 -34q53 -79 85 -147h-237v-86h814v86h-226z" />
<glyph glyph-name="uniE628" unicode="&#xe628;"
d="M16 599h992q7 0 11.5 4.5t4.5 11t-4.5 11.5t-11.5 5h-992q-7 0 -11.5 -5t-4.5 -11.5t4.5 -11t11.5 -4.5zM1008 316h-992q-7 0 -11.5 -4.5t-4.5 -11.5t4.5 -11.5t11.5 -4.5h992q7 0 11.5 4.5t4.5 11.5t-4.5 11.5t-11.5 4.5zM1008 1h-992q-7 0 -11.5 -4.5t-4.5 -11
t4.5 -11.5t11.5 -5h992q7 0 11.5 5t4.5 11.5t-4.5 11t-11.5 4.5z" />
<glyph glyph-name="uniE644" unicode="&#xe644;"
d="M96 0q-13 0 -22.5 9.5t-9.5 22.5v448q0 13 9.5 22.5t22.5 9.5t22.5 -9.5t9.5 -22.5v-448q0 -13 -9.5 -22.5t-22.5 -9.5zM864 512h-189q12 28 19.5 83t0.5 107q-5 45 -30 77.5t-63 45.5q-29 10 -56.5 6t-43.5 -21q-12 -12 -22 -35t-15 -41t-14 -52q-17 -70 -28 -89
q-14 -23 -40 -43t-41 -27t-28 -11h-90q-13 0 -22.5 -9.5t-9.5 -22.5v-448q0 -13 9.5 -22.5t22.5 -9.5h87q22 -12 49 -24t83.5 -26t108.5 -14h216q33 0 68.5 13t51 38.5t44 207.5t28.5 220q0 39 -31 68t-65 29zM833 21q-4 -7 -24.5 -14t-40.5 -7h-216q-23 0 -47.5 3.5t-45 9
t-40 12.5t-34 14t-25.5 12.5t-18 8.5l-6 4h-16h-64v384h64q1 0 7 2h1h1h2h1l1 1q12 4 26 10.5t37 19.5t45.5 34t36.5 46q16 26 35 105q21 85 34 99q3 3 12.5 3t24.5 -4q41 -17 48 -70q5 -46 -4 -98.5t-16 -72t-12 -30.5q-7 -16 2 -31q9 -14 27 -14h235q8 0 20 -10.5
t12 -22.5q0 -33 -26.5 -202.5t-36.5 -191.5z" />
<glyph glyph-name="uniE645" unicode="&#xe645;"
d="M888 598q-10 9 -23 8.5t-22 -10.5l-427 -454l-233 230q-10 9 -23 9t-22.5 -9.5t-9.5 -23t10 -22.5l256 -253h1q1 -1 7 -4q0 -1 1 -1.5t2 -1.5q6 -2 12 -2t12 3q1 0 2 1t2 1q5 3 7 5v0l449 479q9 9 9 22.5t-10 22.5z" />
<glyph glyph-name="uniE646" unicode="&#xe646;"
d="M557 383l266 264q9 9 9 22t-9.5 22.5t-22.5 9.5t-23 -9l-265 -264l-263 264q-9 9 -22.5 9t-23 -9t-9.5 -22.5t10 -22.5l263 -264l-265 -264q-10 -9 -10 -22.5t9.5 -22.5t22.5 -9t23 9l265 264l265 -267q10 -9 23 -9t22.5 9.5t9.5 22.5t-9 23z" />
<glyph glyph-name="uniE64B" unicode="&#xe64b;"
d="M957 491.5q-6 18.5 -25 21.5l-271 42l-120 259q-9 18 -29 18q-21 0 -29 -18l-122 -258l-271 -41q-19 -3 -25.5 -21.5t7.5 -32.5l196 -202l-47 -285q-3 -20 13.5 -31.5t33.5 -1.5l242 133l242 -134q7 -4 15 -4h1q13 0 22.5 9.5t9.5 22.5q0 6 -2 11l-45 279l197 201
q13 14 7 32.5z" />
<glyph glyph-name="uniE64C" unicode="&#xe64c;"
d="M767 -64q-8 0 -15 4l-242 134l-242 -133q-17 -10 -33.5 1.5t-13.5 31.5l47 285l-196 202q-14 14 -8 32.5t25 21.5l156 26q13 3 23.5 -5t13 -21t-5.5 -23.5t-21 -13.5l-95 -16l166 -170q11 -12 8 -28l-39 -235l200 110q15 8 31 -1l199 -110l-38 236q-3 16 9 27l164 169
l-225 34q-17 3 -24 18l-100 213l-100 -212q-5 -12 -17.5 -16.5t-24.5 1t-16.5 18t0.5 24.5l130 274q8 18 29 18q20 0 29 -18l120 -259l271 -42q19 -3 25 -21.5t-7 -32.5l-197 -201l46 -285q3 -20 -14 -31q-8 -6 -18 -6z" />
<glyph glyph-name="uniE651" unicode="&#xe651;"
d="M512 288q-79 0 -135.5 56.5t-56.5 135.5t56.5 135.5t135.5 56.5t135.5 -56.5t56.5 -135.5t-56.5 -135.5t-135.5 -56.5zM512 608q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM512 -64q-13 0 -22 9q-10 9 -10 22.5
t9 22.5q39 41 86 97.5t100.5 129.5t89 144.5t35.5 118.5q0 119 -84.5 203.5t-203.5 84.5t-203.5 -84.5t-84.5 -203.5q0 -57 52.5 -151.5t151.5 -215.5q9 -11 7.5 -24t-12 -21.5t-23.5 -7t-21 11.5q-219 268 -219 408q0 146 103 249t249 103t249 -103t103 -249
q0 -53 -34 -127.5t-76.5 -136.5t-98 -130.5t-80 -95.5t-40.5 -44q-9 -10 -23 -10z" />
<glyph glyph-name="uniE657" unicode="&#xe657;"
d="M512 -64q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5t-131.5 -316.5t-316.5 -131.5zM512 768q-104 0 -192.5 -51.5t-140 -140t-51.5 -192.5t51.5 -192.5t140 -140t192.5 -51.5t192.5 51.5t140 140t51.5 192.5t-51.5 192.5
t-140 140t-192.5 51.5zM727 502.5q-9 9.5 -22.5 9.5t-22.5 -9l-234 -236l-103 106q-9 9 -22.5 9.5t-23 -9t-9.5 -22.5t9 -23l126 -129h1v-1q1 -1 7 -4q0 -1 1 -1.5t2 -1.5q6 -2 12 -2t12 2q1 1 2 1.5t2 1.5q5 3 7 4v1l256 259q10 9 9.5 22t-9.5 22.5z" />
<glyph glyph-name="uniE65C" unicode="&#xe65c;"
d="M954 -12l-153 163q96 116 96 265q0 113 -56 209t-151.5 151.5t-208.5 55.5t-209 -55.5t-151.5 -151.5t-55.5 -209t55.5 -208.5t151.5 -151.5t209 -56q90 0 172 37q12 6 16.5 18.5t-1 24.5t-18 16.5t-24.5 -0.5q-69 -32 -145 -32q-96 0 -177 47.5t-128 128.5t-47 176.5
t47 176.5t128 128t176.5 47t176.5 -47t128.5 -128t47.5 -177q0 -141 -98 -244q-9 -9 -9 -22.5t10 -22.5l1 -1t1.5 -1t1.5 -1.5t1 -2.5l166 -177q9 -10 23 -10q13 0 22 9q10 9 10.5 22t-8.5 23z" />
<glyph glyph-name="uniE65F" unicode="&#xe65f;"
d="M512 832q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5zM512 0q-104 0 -192.5 51.5t-140 140t-51.5 192.5t51.5 192.5t140 140t192.5 51.5t192.5 -51.5t140 -140t51.5 -192.5t-51.5 -192.5
t-140 -140t-192.5 -51.5zM672 384h-160v224q0 13 -9.5 22.5t-22.5 9.5t-22.5 -9.5t-9.5 -22.5v-256q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5t-9.5 22.5t-22.5 9.5z" />
<glyph glyph-name="uniE661" unicode="&#xe661;"
d="M890.5 565q-9.5 9 -23 9t-22.5 -9l-328 -331l-332 329q-10 10 -23 10t-22.5 -9.5t-9.5 -23t10 -22.5l353 -350h1l1 -1v-1q10 -9 23 -9t22 9l350 354q10 9 10 22.5t-9.5 22.5z" />
<glyph glyph-name="uniE663" unicode="&#xe663;"
d="M849 -33h-674q-71 0 -99.5 49t5.5 111l340 609q35 63 90.5 63t90.5 -63l341 -609q34 -63 5.5 -111.5t-99.5 -48.5zM512 735q-18 0 -35 -30l-340 -610q-17 -30 -7 -47t45 -17h674q35 0 45 17t-7 47l-341 610q-16 30 -34 30zM512 256q-13 0 -22.5 9.5t-9.5 22.5v288
q0 13 9.5 22.5t22.5 9.5t22.5 -9.5t9.5 -22.5v-288q0 -13 -9.5 -22.5t-22.5 -9.5zM512 144zM464 144q0 20 14 34t34 14t34 -14t14 -34t-14 -34t-34 -14t-34 14t-14 34z" />
<glyph glyph-name="uniE665" unicode="&#xe665;"
d="M512 160q-79 0 -135.5 56.5t-56.5 135.5t56.5 135.5t135.5 56.5t135.5 -56.5t56.5 -135.5t-56.5 -135.5t-135.5 -56.5zM512 480q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM864 0h-704q-40 0 -68 28t-28 68v512
q0 40 28 68t68 28h96q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5h-96q-13 0 -22.5 -9.5t-9.5 -22.5v-512q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5v512q0 13 -9.5 22.5t-22.5 9.5h-352q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5h352q40 0 68 -28
t28 -68v-512q0 -40 -28 -68t-68 -28zM816 560zM768 560q0 20 14 34t34 14t34 -14t14 -34t-14 -34t-34 -14t-34 14t-14 34zM480 768q0 -13 -9.5 -22.5t-22.5 -9.5h-128q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5h128q13 0 22.5 -9.5t9.5 -22.5z" />
<glyph glyph-name="uniE667" unicode="&#xe667;"
d="M512 -32q-13 0 -23 9l-96 96q-9 10 -9 23t9.5 22.5t22.5 9.5t23 -9l73 -74l73 74q10 9 23 9h224q13 0 22.5 9.5t9.5 22.5v512q0 13 -9.5 22.5t-22.5 9.5h-640q-13 0 -22.5 -9.5t-9.5 -22.5v-512q0 -13 9.5 -22.5t22.5 -9.5h96q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5
t-22.5 -9.5h-96q-40 0 -68 28t-28 68v512q0 40 28 68t68 28h640q40 0 68 -28t28 -68v-512q0 -40 -28 -68t-68 -28h-211l-86 -87q-10 -9 -23 -9zM336 384q-20 0 -34 14t-14 34t14 34t34 14t34 -14t14 -34t-14 -34t-34 -14zM528 384q-20 0 -34 14t-14 34t14 34t34 14t34 -14
t14 -34t-14 -34t-34 -14zM720 384q-20 0 -34 14t-14 34t14 34t34 14t34 -14t14 -34t-14 -34t-34 -14z" />
<glyph glyph-name="uniE668" unicode="&#xe668;"
d="M736 768q-102 0 -176 -70q-6 -5 -48 -48l-47 47q-74 71 -177 71q-106 0 -181 -75t-75 -181q0 -100 76 -182l317 -321q42 -41 87 -41t87 42l316 320l3 2q25 31 37.5 49.5t24.5 54t12 76.5q0 106 -75 181t-181 75z" />
<glyph glyph-name="uniE669" unicode="&#xe669;"
d="M512 -32q-45 0 -87 41l-319 323q-25 31 -37.5 49.5t-24.5 54t-12 76.5q0 106 75 181t181 75q81 0 147 -47q11 -7 13.5 -20t-5.5 -24t-21 -13.5t-24 5.5q-49 35 -110 35q-79 0 -135.5 -56.5t-56.5 -135.5q0 -43 13 -70t46 -69l316 -319q22 -22 41 -22q18 0 41 23l317 320
q58 62 58 137q0 79 -56.5 135.5t-135.5 56.5q-75 0 -130 -50l-134 -134q-9 -10 -22 -10t-22.5 9.5t-9.5 22.5t9 23l135 135q75 68 174 68q106 0 181 -75t75 -181q0 -100 -76 -182l-317 -320q-42 -42 -87 -42z" />
<glyph glyph-name="uniE66B" unicode="&#xe66b;"
d="M526 -28q-31 0 -69 37l-182 183h-83q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h83l182 183q37 37 69 37q20 0 35 -15t15 -45v-704q0 -31 -15 -45.5t-35 -14.5zM192 512q-13 0 -22.5 -9.5t-9.5 -22.5v-192q0 -13 9.5 -22.5t22.5 -9.5h96q13 0 23 -9l192 -192l9 -9v676
q-5 -4 -9 -9l-192 -192q-10 -9 -23 -9h-96zM688 166q-11 0 -19 6q-11 7 -13 20.5t6 23.5l12 18q22 29 32 45t20 45t10 60q0 33 -9 60.5t-18.5 42.5t-29.5 42q-10 13 -17 23q-8 10 -6 23.5t13 21t24 5.5t21 -13q4 -7 16 -21q23 -31 34.5 -49.5t23.5 -55.5t12 -79
q0 -41 -13 -79t-25 -57.5t-36 -51.5l-12 -17q-10 -13 -26 -13zM796 57q-12 0 -21 8q-10 9 -10.5 22t7.5 23q58 66 91 130t33 144t-33 144t-91 130q-8 10 -7.5 23t10.5 22t23.5 8t22.5 -11q63 -73 101 -147.5t38 -168.5t-38 -168.5t-101 -147.5q-10 -11 -25 -11z" />
<glyph glyph-name="uniE66C" unicode="&#xe66c;"
d="M64 288q0 -145 83.5 -261t216.5 -162q5 -1 8.5 -1t5.5 1t3.5 2.5t2 4.5t0.5 4v6v5v78q-38 -5 -66.5 1t-43 19.5t-22.5 25.5t-13 26.5t-5 16.5q-8 13 -23.5 24t-23.5 17.5t-3 12.5q45 23 100 -58q30 -44 104 -25q8 35 34 60q-101 18 -150 75t-49 138q0 77 48 132
q-19 57 5 121q26 2 57.5 -10t44.5 -20.5t22 -15.5q51 14 112 14q63 0 114 -14q65 49 122 44q23 -62 5 -118q49 -56 49 -133q0 -81 -49.5 -138t-150.5 -75q38 -37 38 -91v-113v-2q1 -5 1.5 -8t4 -5.5t9.5 -2.5q135 46 220 162.5t85 262.5q0 122 -60 225t-163 163t-225 60
t-225 -60t-163 -163t-60 -225z" />
<glyph glyph-name="uniE66F" unicode="&#xe66f;"
d="M669 444q14 0 31 -2q-21 96 -112 159t-207 63q-86 0 -158.5 -35.5t-115 -97.5t-42.5 -136q0 -124 126 -213l-31 -95l110 56q80 -16 111 -16q13 0 29 1q-9 33 -9 66q0 104 78 177t190 73zM499 530q18 0 29 -11t11 -28.5t-11 -28.5t-29 -11t-32.5 11t-14.5 28.5t14.5 28.5
t32.5 11zM278 451q-18 0 -32.5 11t-14.5 28.5t14.5 28.5t32.5 11t29 -11t11 -28.5t-11 -28.5t-29 -11zM957 198q0 94 -80 161.5t-188 67.5q-112 0 -190.5 -67t-78.5 -162t78.5 -162t190.5 -67q32 0 95 16l86 -48l-23 79q110 83 110 182zM602 238q-12 0 -22 9.5t-10 21.5
t10 22t22 10q17 0 28.5 -9.5t11.5 -22t-11.5 -22t-28.5 -9.5zM776 238q-12 0 -22 9.5t-10 21.5t10 22t22 10q17 0 28 -10t11 -22t-11 -21.5t-28 -9.5z" />
<glyph glyph-name="uniE679" unicode="&#xe679;"
d="M672 -16q-20 0 -34 14l-352 352q-14 14 -14 34t14 34l352 352q14 14 34 14t34 -14t14 -34t-14 -34l-318 -318l318 -318q14 -14 14 -34t-14 -34t-34 -14z" />
<glyph glyph-name="uniE684" unicode="&#xe684;"
d="M224 288q-40 0 -68 28t-28 68t28 68t68 28t68 -28t28 -68t-28 -68t-68 -28zM512 288q-40 0 -68 28t-28 68t28 68t68 28t68 -28t28 -68t-28 -68t-68 -28zM800 288q-40 0 -68 28t-28 68t28 68t68 28t68 -28t28 -68t-28 -68t-68 -28z" />
<glyph glyph-name="uniE686" unicode="&#xe686;"
d="M512 832q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5zM289 72q7 0 10 1q103 37 158 41q12 1 20.5 10t8.5 22v59q0 15 -11 24q-37 32 -54.5 94.5t-17.5 128.5q0 136 125 136q118 0 118 -136
q0 -66 -26 -132.5t-64 -96.5q-12 -10 -12 -25v-55q0 -13 8.5 -22t20.5 -10q50 -6 148 -45h3l2 -1q-97 -65 -214 -65q-122 0 -223 72zM765 95q0 23 -20 31q-80 31 -137 43v14q48 45 75 121.5t27 147.5q0 96 -47.5 148t-134.5 52q-89 0 -139 -53t-50 -147q0 -23 2.5 -49.5
t10 -66.5t25.5 -79t45 -66v-17q-61 -11 -145 -41q-11 -3 -16.5 -13.5t-3.5 -21.5q-60 53 -94.5 127.5t-34.5 158.5q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5q0 -85 -35 -160t-96 -129z" />
<glyph glyph-name="uniE68C" unicode="&#xe68c;"
d="M943 551q-17 -36 -79 -67v43q37 21 46 41q28 58 0 101q-25 40 -82 40q-24 0 -47.5 -23t-42 -61t-32.5 -78t-24 -83l-15 -11l-23 35q11 44 25.5 83.5t36.5 82.5t53 68.5t66 25.5q79 0 116 -60.5t2 -136.5zM647 394q14 0 24 8t14 20q21 19 39 30q2 -11 2 -19q0 -32 -23 -55
t-55.5 -23t-55.5 23t-23 55q0 25 13.5 44.5t34.5 28.5l-9 -53h-4q-3 -4 4 -20v0q0 -16 11.5 -27.5t27.5 -11.5zM530 571q-9 0 -21.5 -5t-18.5 -11l-386 -385l278 -279l387 386q5 6 10.5 18.5t5.5 21.5v88v72v94h-33q10 23 19 40h14q17 0 28.5 -11.5t11.5 -28.5l-1 -59h1
v-157h-1v-38q0 -16 -8 -36t-20 -31l-386 -386q-11 -12 -27.5 -12t-27.5 12l-279 278q-11 11 -11 27.5t11 27.5l387 386q11 11 30.5 19.5t36.5 8.5h116q-7 -19 -12 -40h-104zM540 -109l307 308q6 6 11.5 18.5t5.5 20.5v190q22 12 39 26v-216q0 -16 -8.5 -36t-19.5 -31
l-307 -307q-12 -12 -28.5 -12t-27.5 12l-24 23l28 28z" />
<glyph glyph-name="uniE691" unicode="&#xe691;"
d="M512 112zM464 112q0 20 14 34t34 14t34 -14t14 -34t-14 -34t-34 -14t-34 14t-14 34zM512 -64q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5t-131.5 -316.5t-316.5 -131.5zM512 768q-104 0 -192.5 -51.5t-140 -140t-51.5 -192.5
t51.5 -192.5t140 -140t192.5 -51.5t192.5 51.5t140 140t51.5 192.5t-51.5 192.5t-140 140t-192.5 51.5zM512 222q-13 0 -22.5 9.5t-9.5 22.5v54q0 25 13 50t25.5 39.5t36.5 38.5q18 18 26.5 27t17.5 23t9 24q0 40 -28 68.5t-68 28.5t-68 -27.5t-28 -67.5q0 -13 -9.5 -22.5
t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 66 47 112.5t113 46.5t113 -47t47 -114q0 -22 -12 -45.5t-24 -37t-35 -36.5q-19 -19 -28.5 -29t-19 -26t-9.5 -28v-54q0 -13 -9.5 -22.5t-22.5 -9.5z" />
<glyph glyph-name="uniE69F" unicode="&#xe69f;"
d="M512 -64q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5t-131.5 -316.5t-316.5 -131.5zM512 768q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5z
M694.5 373.5q-9.5 9.5 -23 9.5t-22.5 -9l-105 -104v307q0 13 -9.5 22.5t-22.5 9.5t-22.5 -9.5t-9.5 -22.5v-309l-105 107q-10 9 -23 9.5t-22.5 -9t-9.5 -23t9 -22.5l160 -161q9 -10 23 -10q13 0 22 9v1l160 159q10 10 10 23t-9.5 22.5z" />
<glyph glyph-name="uniE6A0" unicode="&#xe6a0;"
d="M1 300.5q0 42.5 30 72t72.5 29.5t72 -29.5t29.5 -72t-29.5 -72.5t-72 -30t-72.5 30t-30 72.5zM410 300.5q0 42.5 30 72t72 29.5t72 -29.5t30 -72t-30 -72.5t-72 -30t-72 30t-30 72.5zM819 300.5q0 42.5 29.5 72t72 29.5t72.5 -29.5t30 -72t-30 -72.5t-72.5 -30t-72 30
t-29.5 72.5z" />
<glyph glyph-name="uniE6A3" unicode="&#xe6a3;"
d="M761 364l1 1t1 2q7 13 4.5 28.5t-14.5 26.5l-353 334q-15 14 -34.5 13.5t-33.5 -15t-13 -34.5t15 -34l317 -299l-316 -305q-14 -13 -14.5 -33t13.5 -35q14 -14 35 -14q19 0 33 13l350 338v1q1 1 1.5 1t0.5 1h1q1 2 6 10z" />
<glyph glyph-name="uniE6B4" unicode="&#xe6b4;"
d="M608 128q-13 0 -22.5 9.5t-9.5 22.5v352q0 13 9.5 22.5t22.5 9.5t22.5 -9.5t9.5 -22.5v-352q0 -13 -9.5 -22.5t-22.5 -9.5zM416 128q-13 0 -22.5 9.5t-9.5 22.5v352q0 13 9.5 22.5t22.5 9.5t22.5 -9.5t9.5 -22.5v-352q0 -13 -9.5 -22.5t-22.5 -9.5zM928 672h-160v64
q0 40 -28 68t-67 28h-321q-40 0 -68 -28t-28 -68v-64h-160q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5t-9.5 22.5t-22.5 9.5zM320 736q0 13 9.5 22.5t22.5 9.5h321q13 0 22 -9.5t9 -22.5v-64h-384v64zM736 -64h-448q-40 0 -68 28t-28 68
v480q0 14 9.5 23t22.5 9t22.5 -9t9.5 -23v-480q0 -13 9.5 -22.5t22.5 -9.5h448q13 0 22.5 9.5t9.5 22.5v479q0 13 9.5 22.5t22.5 9.5t22.5 -9.5t9.5 -22.5v-479q0 -40 -28 -68t-68 -28z" />
<glyph glyph-name="uniE6BC" unicode="&#xe6bc;"
d="M640 480h-256q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5h256q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5zM579 352h-195q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5h195q14 0 23 -9.5t9 -22.5t-9 -22.5t-23 -9.5zM962 448q0 104 -60 192.5t-163 140
t-224.5 51.5t-225 -51.5t-163.5 -140t-60 -192.5q0 -87 45.5 -166t127.5 -135q11 -7 24 -4.5t20.5 13.5t5 24t-13.5 20q-69 47 -107 112t-38 136q0 87 51.5 160.5t140 116.5t192.5 43t192.5 -43t140 -116.5t51.5 -160.5t-51.5 -160.5t-140 -116.5t-192.5 -43h-3l-2 -1
q-12 2 -22 -3.5t-14 -16.5q-9 -26 -94 -74q17 58 3 79q-10 16 -30 16q-13 0 -22.5 -9.5t-9.5 -22.5q0 -9 5 -16q-6 -33 -33 -100q-9 -20 7 -35q9 -9 22 -9q7 0 13 3q144 64 188 125q120 2 221 53.5t160 139.5t59 191z" />
<glyph glyph-name="uniE6BF" unicode="&#xe6bf;"
d="M546 256h-1q-22 0 -45 26l-37 43q-9 10 -8.5 24t10.5 23t23 8.5t22 -10.5l37 -40l174 179l-50 55l-72 -75q-10 -9 -23 -9t-22.5 9t-9.5 22.5t9 22.5l74 75q18 18 45 18t45 -19l50 -53q18 -19 17.5 -45.5t-18.5 -44.5l-176 -185q-24 -24 -44 -24zM352.5 141
q-26.5 0 -45.5 19l-51 49q-19 18 -19 45t19 45l179 187q25 26 45 26t45 -25l42 -45q9 -9 9 -23.5t-9.5 -23.5t-22.5 -9.5t-23 8.5l-41 41l-179 -181l51 -48l75 73q9 9 22 9t22.5 -9.5t9.5 -22.5t-9 -23l-75 -73q-18 -19 -44.5 -19zM512 -64q-185 0 -316.5 131.5
t-131.5 316.5t131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5t-131.5 -316.5t-316.5 -131.5zM512 768q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5z" />
<glyph glyph-name="uniE6C4" unicode="&#xe6c4;"
d="M729 399q-1 0 -4.5 1t-4.5 1.5t-4 1.5t-4 2t-3 2t-2.5 2.5t-1.5 3.5t-0.5 4t1.5 5q11 27 11.5 52.5t-10.5 42.5q-39 55 -190 -7v-1q-23 -9 -22 5q0 3 1 5q22 71 -10 103q-36 36 -121 3t-169 -115q-63 -63 -97.5 -126.5t-34.5 -119.5q0 -69 55 -123.5t139 -81.5t177 -27
q87 0 163 23t126 60t78.5 80.5t28.5 84.5q0 46 -29.5 76t-72.5 43zM436 83.5q-110 -10.5 -193 32t-90 114t66 129.5t182.5 68.5t192.5 -32t90 -114t-65.5 -129.5t-182.5 -68.5zM897.5 661q-44.5 46 -106 64t-124.5 6q-14 -3 -22 -14.5t-5 -24.5t15.5 -20.5t26.5 -4.5
q44 8 88 -4.5t75.5 -45.5t41 -76t-4.5 -82q-5 -13 1.5 -25t20.5 -16.5t27 2t17 19.5q20 55 7 115.5t-57.5 106.5zM808 579q-21 23 -51 32t-61 3q-12 -3 -18.5 -13t-4 -21.5t13 -18t22.5 -4.5q32 7 54.5 -17t11.5 -54q-3 -12 2.5 -22.5t17 -14t23 2t14.5 16.5q10 28 3.5 58
t-27.5 53zM485 392q-54 14 -107.5 -9t-76.5 -70q-24 -47 -3.5 -93t74.5 -63q57 -18 114.5 6t80.5 75q22 50 -2 95t-80 59zM430 233.5q-11 -16.5 -31.5 -23t-37.5 1.5q-18 7 -22.5 24t6.5 33.5t31 23t37 -1.5q18 -7 23 -24t-6 -33.5zM478 292.5q-4 -6.5 -11.5 -9t-14.5 0
t-8.5 9t1.5 12.5q10 15 26 9q7 -2 9 -8.5t-2 -13z" />
<glyph glyph-name="uniE6DE" unicode="&#xe6de;"
d="M887 279l-353 350l-1 1h-1v1q-10 9 -23 9t-22 -10l-350 -353q-10 -9 -10 -22.5t9.5 -22.5t23 -9t22.5 9l328 331l332 -330q10 -9 23 -9t22.5 9.5t9.5 23t-10 22.5z" />
<glyph glyph-name="uniE6E3" unicode="&#xe6e3;"
d="M864 512h-189q12 28 19.5 83t0.5 107q-5 45 -30 77.5t-63 45.5q-29 10 -56.5 5.5t-43.5 -20.5q-12 -12 -22 -35t-15.5 -41t-13.5 -52q-17 -70 -28 -89q-20 -34 -57.5 -57.5t-51.5 -23.5h-90q-13 0 -22.5 -9.5t-9.5 -22.5v-448q0 -13 9.5 -22.5t22.5 -9.5h87q8 0 45 -16
t91.5 -32t104.5 -16h216q33 0 68.5 13t51 38.5t44 207.5t28.5 220q0 39 -31 68t-65 29zM96 512q-13 0 -22.5 -9.5t-9.5 -22.5v-448q0 -13 9.5 -22.5t22.5 -9.5t22.5 9.5t9.5 22.5v448q0 13 -9.5 22.5t-22.5 9.5z" />
<glyph glyph-name="uniE6E5" unicode="&#xe6e5;"
d="M512 -62q-91 0 -173.5 35.5t-142 95t-95 142t-35.5 173.5t35.5 173.5t95 142t142 95t173.5 35.5t173.5 -35.5t142 -95t95 -142t35.5 -173.5t-35.5 -173.5t-95 -142t-142 -95t-173.5 -35.5zM512 766q-104 0 -192 -51t-139 -139t-51 -192t51 -192t139 -139t192 -51t192 51
t139 139t51 192t-51 192t-139 139t-192 51zM512 592zM464 592q0 20 14 34t34 14t34 -14t14 -34t-14 -34t-34 -14t-34 14t-14 34zM512 128q-13 0 -22.5 9.5t-9.5 22.5v288q0 13 9.5 22.5t22.5 9.5t22.5 -9.5t9.5 -22.5v-288q0 -13 -9.5 -22.5t-22.5 -9.5z" />
<glyph glyph-name="uniE6EB" unicode="&#xe6eb;"
d="M544 -64q-6 0 -12 2q-20 8 -20 30v287q-67 -3 -132.5 -20.5t-108.5 -36.5t-82.5 -43.5t-52 -34.5t-18.5 -15q-18 -16 -38 -5t-15 34q2 14 7.5 36t28 78.5t52.5 104.5q69 109 168.5 166t222.5 57q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5q-68 0 -128 -21
t-100.5 -52t-74.5 -74.5t-53 -80t-35 -75.5q182 111 391 111q13 0 22.5 -9.5t9.5 -22.5v-238l308 330l-308 335v-43q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5v125q0 21 20.5 29t35.5 -8l384 -416q8 -9 8 -21.5t-9 -21.5l-384 -413q-9 -10 -23 -10z" />
<glyph glyph-name="uniE6F3" unicode="&#xe6f3;"
d="M769 192q-54 0 -91 -38l-310 172q15 28 15 58q0 17 -6 36l305 189q37 -33 85 -33q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5q0 -20 8 -41l-302 -188q-38 37 -90 37q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5q38 0 70 21
l321 -179q-5 -18 -5 -34q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5zM767.5 768q26.5 0 45 -19t18.5 -45.5t-18.5 -45t-45 -18.5t-45.5 18.5t-19 45t19 45.5t45.5 19zM191 384.5q0 26.5 19 45t45.5 18.5t45 -18.5t18.5 -45t-18.5 -45.5
t-45 -19t-45.5 19t-19 45.5zM768.5 0q-26.5 0 -45 19t-18.5 45.5t18.5 45t45 18.5t45.5 -18.5t19 -45t-19 -45.5t-45.5 -19z" />
<glyph glyph-name="uniE708" unicode="&#xe708;"
d="M576 736h-128q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5h128q13 0 22.5 -9.5t9.5 -22.5t-9.5 -22.5t-22.5 -9.5zM819 550l36 35q9 10 9 23t-9.5 22.5t-22.5 9.5t-23 -9l-33 -33q-52 50 -120.5 78t-143.5 28q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5
t271.5 -112.5t271.5 112.5t112.5 271.5q0 127 -77 230zM544 2v30q0 13 -9.5 22.5t-22.5 9.5t-22.5 -9.5t-9.5 -22.5v-30q-113 11 -194 92t-92 194h30q13 0 22.5 9.5t9.5 22.5t-9.5 22.5t-22.5 9.5h-30q11 113 92 194t194 92v-30q0 -13 9.5 -22.5t22.5 -9.5t22.5 9.5
t9.5 22.5v30q113 -11 194 -92t92 -194h-30q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5h30q-11 -113 -92 -194t-194 -92zM652 473l-160 -128q-10 -8 -11.5 -21.5t6.5 -23.5q10 -12 25 -12q11 0 20 7l160 128q10 8 11.5 21.5t-6.5 23.5t-21.5 11.5t-23.5 -6.5z" />
<glyph glyph-name="uniE70A" unicode="&#xe70a;"
d="M890 146q-5 7 -13.5 19.5t-28.5 47t-36 68t-28.5 76.5t-12.5 77q0 118 -45.5 189t-117.5 98v15q0 40 -28 68t-68 28t-68 -28t-28 -68v-17q-19 -13 -12 -35q4 -12 16 -18.5t24 -2.5q27 9 57 9h22q86 0 135 -63t49 -175q0 -122 110 -294q-167 -76 -305 -76q-137 0 -305 77
q110 171 110 293q0 94 35 154q6 11 3 24t-14.5 19.5t-24.5 3t-20 -14.5q-43 -75 -43 -186q0 -34 -12.5 -77t-28.5 -76t-36 -67.5t-28.5 -47.5t-13.5 -19q-8 -12 -5 -26t16 -21t35.5 -18t82 -33t115.5 -34q16 -50 52.5 -80.5t81.5 -30.5t81 30.5t53 80.5q56 12 115.5 34
t82 32.5t35.5 17.5t16 21t-5 26zM501 736q-2 0 -21 -2v2q0 13 9.5 22.5t22.5 9.5t22.5 -9.5t9.5 -22.5v-1q-11 1 -21 1h-22zM512 -32q-34 0 -58 35q31 -3 58 -3t58 3q-24 -35 -58 -35z" />
<glyph glyph-name="uniE71F" unicode="&#xe71f;"
d="M512 -64q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5t-131.5 -316.5t-316.5 -131.5zM512 768q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5zM290 372
l1 -1q2 -6 6 -10v0l159 -159q10 -10 23 -10t22.5 9.5t9.5 22.5t-9 23l-104 103h305q14 0 23 9.5t9 23t-9 22.5t-23 9h-306l106 105q9 10 9 23t-9 22.5t-23 9.5q-13 0 -22 -9l-161 -159q-15 -15 -7 -34z" />
<glyph glyph-name="uniE720" unicode="&#xe720;"
d="M512 -64q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5t-131.5 -316.5t-316.5 -131.5zM512 768q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5zM733 395
q-3 6 -7 10v0l-159 160q-9 9 -22.5 9t-23 -9t-9.5 -22.5t10 -22.5l103 -104h-305q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5h307l-106 -105q-10 -9 -10 -22.5t9.5 -23t22.5 -9.5t23 10l160 158q15 15 7 35z" />
<glyph glyph-name="uniE731" unicode="&#xe731;"
d="M512 -32q-16 0 -26 13l-65 91q-156 28 -256.5 133.5t-100.5 242.5q0 159 131.5 271.5t316.5 112.5t316.5 -112.5t131.5 -271.5q0 -137 -100.5 -242.5t-256.5 -133.5l-65 -91q-10 -13 -26 -13zM512 768q-159 0 -271.5 -94t-112.5 -226q0 -116 89.5 -205t226.5 -110
q13 -2 21 -13l47 -65l47 65q7 11 21 13q137 21 226.5 110t89.5 205q0 132 -112.5 226t-271.5 94zM288.5 384q-26.5 0 -45.5 19t-19 45t19 45t45.5 19t45 -19t18.5 -45t-18.5 -45t-45 -19zM288 448v-32v32zM736.5 384q-26.5 0 -45.5 19t-19 45t19 45t45.5 19t45 -19t18.5 -45
t-18.5 -45t-45 -19zM736 448v-32v32zM512.5 384q-26.5 0 -45.5 19t-19 45t19 45t45.5 19t45 -19t18.5 -45t-18.5 -45t-45 -19zM512 448v-32v32z" />
<glyph glyph-name="uniE739" unicode="&#xe739;"
d="M961 640q0 40 -28.5 68t-67.5 28h-186h-1h-1q-6 -1 -10 -2l-1 -1h-1q-5 -3 -8 -6q-18 -17 -35 -88q-3 -12 -4 -14q-4 -17 -27 -17h-7h-8h-416q-40 0 -68 -28.5t-28 -69.5l32 -414q0 -40 28 -68t68 -28h640q40 0 68 28t28 66zM864 96q0 -13 -9.5 -22.5t-22.5 -9.5h-640
q-13 0 -22.5 10t-9.5 24l-32 414q0 13 9.5 22.5t22.5 9.5h416h8h7q35 0 58.5 17t30.5 48q2 4 4 15q8 34 13 48h168q13 0 22.5 -9.5t9.5 -22.5v-2v-1zM128 672h416q13 0 22.5 9.5t9.5 22.5t-9.5 22.5t-22.5 9.5h-416q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5z" />
<glyph glyph-name="uniE73D" unicode="&#xe73d;"
d="M992 384q0 9 -1 11q-1 6 -2 11q-1 1 -1 2q-1 3 -2 4q-66 145 -197 234.5t-277 89.5t-277 -89t-197 -234q-1 -3 -2 -5q0 -2 -1 -2q0 -2 -1 -8l-2 -11v-6q1 -7 1 -8q0 -3 1 -7l2 -6q1 -3 2 -4q66 -145 197 -234.5t277 -89.5t277 89t196 233q2 3 3 7q0 1 1 1q0 2 0.5 4
t1 3.5t-0.5 1.5q2 8 2 13zM927 382v-1v-1q-59 -128 -173.5 -206t-241.5 -78t-241 78t-174 206v2h-1v1v1v1q0 1 1 2v1q59 128 173.5 206t241.5 78t241.5 -78t173.5 -206v-1q1 -3 1 -4zM512 544q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47z
M512 288q-40 0 -68 28t-28 68t28 68t68 28t68 -28t28 -68t-28 -68t-68 -28z" />
<glyph glyph-name="uniE741" unicode="&#xe741;"
d="M637 462q7 11 3.5 24t-15 19.5t-24 3.5t-19.5 -15q-19 -33 -67.5 -56t-97 -23t-97 23.5t-67.5 56.5q-7 11 -19.5 14.5t-24 -3t-15 -19.5t3.5 -24q29 -52 93.5 -82t126.5 -30q60 0 124.5 30t94.5 81zM704 192q40 0 68 28t28 68v416q0 40 -28 68t-68 28h-576q-40 0 -68 -28
t-28 -68v-416q0 -40 28 -68t68 -28v-160q0 -22 20 -30q6 -2 12 -2q14 0 23 10l171 182h350zM193 220v2v2q0 13 -9 22.5t-23 9.5h-33q-13 0 -22.5 9.5t-9.5 22.5v416q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-364h-1
q-3 0 -9 -2h-1q-1 0 -2 -1q-2 -1 -7 -5h-1l-2 -2h-1l-124 -133zM896 608q-13 0 -22.5 -9.5t-9.5 -23t9.5 -22.5t23 -9t22.5 -9.5t9 -22.5v-352q0 -14 -9 -23t-23 -9h-32q-13 0 -22.5 -9.5t-9.5 -22.5v-1v0v-50l-73 73q-9 10 -23 10h-160q-13 0 -22.5 -9.5t-9.5 -22.5
t9.5 -22.5t22.5 -9.5h147l118 -119q9 -10 23 -10q6 0 12 3q19 8 20 29v97q40 0 68 28t28 68v352q0 39 -28 67.5t-68 28.5z" />
<glyph glyph-name="uniE74A" unicode="&#xe74a;"
d="M257 319h512q14 0 23 9.5t9 22.5t-9 22.5t-23 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5zM257 127h512q14 0 23 9.5t9 22.5t-9 22.5t-23 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5zM448 704h160q13 0 22.5 9.5t9.5 22.5t-9.5 22.5
t-22.5 9.5h-160q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5zM847 768h-47q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5h47q5 0 11 -9t6 -23v-96h-704v96q0 13 9 22.5t22 9.5h65q13 0 22.5 9.5t9.5 22.5t-9.5 22.5t-22.5 9.5h-65q-39 0 -67 -28t-28 -68v-640
q0 -40 28 -68t68 -28h640q40 0 68 28t28 68v640q0 40 -24 68t-57 28zM864 32q0 -13 -9.5 -22.5t-22.5 -9.5h-640q-13 0 -22.5 9.5t-9.5 22.5v480h704v-480zM704 672q13 0 22.5 9.5t9.5 22.5v96q0 13 -9.5 22.5t-22.5 9.5t-22.5 -9.5t-9.5 -22.5v-96q0 -13 9.5 -22.5
t22.5 -9.5zM352 672q13 0 22.5 9.5t9.5 22.5v96q0 13 -9.5 22.5t-22.5 9.5t-22.5 -9.5t-9.5 -22.5v-96q0 -13 9.5 -22.5t22.5 -9.5z" />
<glyph glyph-name="uniE758" unicode="&#xe758;"
d="M447 -48q-5 0 -10 2q-104 35 -170.5 120t-73.5 191q-1 3 -1 7q0 44 -6 83t-13 62t-16 41.5t-13 23.5t-6 8q-15 16 -6 35q9 20 31 19q97 -6 144 -38q29 -18 54 -68q13 39 20.5 91t9 94t0 86.5t-3 61.5t-2.5 25q-2 21 16 31.5t35 -1.5q10 -7 24 -18t50 -41t67.5 -60
t67.5 -71.5t59 -78.5q7 52 1 112q-2 22 17.5 31.5t36.5 -4.5q7 -7 17.5 -18.5t35 -49t42.5 -80.5t31.5 -113.5t11.5 -147.5q0 -94 -48 -176t-130 -129q-21 -12 -38 4.5t-6 37.5q16 31 16 63q1 48 -44 99.5t-108 95.5q13 -117 -18 -164q-8 -12 -22 -14t-25 7q-32 26 -66 46
q-12 6 -15.5 18.5t3 24.5t19 15.5t24.5 -3.5q17 -9 38 -24q7 63 -12 152q-5 20 11.5 32.5t34.5 2.5q16 -9 36 -21.5t60 -42.5t70 -61t54 -75t24 -85q78 84 78 198q4 162 -63 285q-8 -93 -47 -120q-13 -9 -28 -3.5t-20 20.5q-34 106 -221 260q11 -271 -69 -388
q-11 -17 -31 -14t-26 22q-9 30 -25.5 62t-31.5 41q-15 10 -49 18q31 -74 34 -179v-4q0 -91 56 -167.5t145 -105.5q13 -4 19 -16t1 -25q-7 -22 -30 -22z" />
<glyph glyph-name="uniE75C" unicode="&#xe75c;"
d="M512 -64q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5t-131.5 -316.5t-316.5 -131.5zM512 768q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5z
M695.5 440.5q-9.5 9.5 -22.5 9t-23 -9.5l-136 -139l-136 137q-9 9 -22.5 9.5t-23 -9t-9.5 -23t10 -22.5l158 -160q9 -10 23 -10q6 0 12 3h1l2 2q5 3 7 5h1l159 162q9 10 9 23t-9.5 22.5z" />
<glyph glyph-name="uniE75D" unicode="&#xe75d;"
d="M823 501l-287 289q-5 5 -11 7q-6 3 -13 3q-17 0 -26 -15l-255 -254q-9 -9 -9 -22.5t9 -23t22.5 -9.5t22.5 10l204 203v-561q0 -13 9.5 -22.5t22.5 -9.5t22.5 9.5t9.5 22.5v563l234 -235q9 -10 22.5 -10t23 9.5t9.5 22.5t-10 23zM896 192q-13 0 -22.5 -9.5t-9.5 -22.5
v-128h-704v128q0 13 -9.5 22.5t-22.5 9.5t-22.5 -9.5t-9.5 -22.5v-160q0 -13 9.5 -22.5t22.5 -9.5h768q13 0 22.5 9.5t9.5 22.5v160q0 13 -9.5 22.5t-22.5 9.5z" />
<glyph glyph-name="uniE761" unicode="&#xe761;"
d="M920 581l-247 242q-9 9 -23 9q-13 0 -22 -9l-459 -471q-7 -7 -9 -16l-62 -331q-3 -17 9 -29q9 -9 22 -9q4 0 7 1l293 65q9 2 16 9l476 494q9 10 8.5 23t-9.5 22zM434 123l-123 121q-9 10 -22.5 10t-22.5 -9.5t-9 -23t9 -22.5l113 -111l-209 -47l51 273l430 441l201 -197z
" />
<glyph glyph-name="uniE769" unicode="&#xe769;"
d="M64 685h670v22h-670v-22zM64 373h670v22h-670v-22zM64 60h670v23h-670v-23zM823 707v-22h134v22h-134zM823 373h134v22h-134v-22zM823 60h134v23h-134v-23z" />
<glyph glyph-name="uniE78B" unicode="&#xe78b;"
d="M160 -32q-18 0 -27 15q-7 11 -4 24t14 20q17 11 43 25.5t88.5 38.5t109.5 27v18q-91 37 -145.5 124.5t-54.5 195.5q0 93 44 172.5t118.5 125.5t163 46t163.5 -46t118.5 -125.5t43.5 -172.5q0 -108 -52.5 -194t-142.5 -124v-21q47 -4 109 -28t88.5 -38t42.5 -24
q12 -6 15 -19t-3.5 -24.5t-19.5 -14.5t-24 3q-131 76 -215 82h-25q-13 0 -22.5 9t-9.5 23v74q0 23 22 30q79 27 126 99.5t47 166.5q0 116 -76.5 198t-184.5 82t-185 -82t-77 -198q0 -94 49 -168t129 -100q22 -7 22 -30v-72q0 -14 -9.5 -23t-22.5 -9h-31q-38 -2 -93.5 -24.5
t-77.5 -35t-37 -21.5q-8 -5 -17 -5z" />
<glyph glyph-name="uniE791" unicode="&#xe791;"
d="M887 599l-192 192q-5 4 -11 6.5t-12 2.5h-448q-40 0 -68 -28t-28 -68v-640q0 -40 28 -68t68 -28h576q40 0 68 28t28 68v512q0 13 -9 23zM704 691l115 -115h-115v115zM800 32h-576q-13 0 -22.5 9.5t-9.5 22.5v640q0 13 9.5 22.5t22.5 9.5h416v-192q0 -13 9.5 -22.5
t22.5 -9.5h160v-448q0 -13 -9.5 -22.5t-22.5 -9.5zM288 544h192q13 0 22.5 9.5t9.5 22.5t-9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5zM608 416h-320q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5h320q13 0 22.5 9.5t9.5 22.5
t-9.5 22.5t-22.5 9.5zM608 224h-320q-13 0 -22.5 -9.5t-9.5 -22.5t9.5 -22.5t22.5 -9.5h320q13 0 22.5 9.5t9.5 22.5t-9.5 22.5t-22.5 9.5z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 32 KiB

BIN
inc/fonts/iconfont.ttf Normal file

Binary file not shown.

BIN
inc/fonts/iconfont.woff Normal file

Binary file not shown.

800
inc/siren-update.php Normal file
View File

@ -0,0 +1,800 @@
<?php
/**
* Custom function
* @Siren
*/
// 允许分类、标签描述添加html代码
remove_filter('pre_term_description', 'wp_filter_kses');
remove_filter('term_description', 'wp_kses_data');
// 去除顶部工具栏
show_admin_bar(false);
/*
* 视频
*/
function bgvideo(){
if(!akina_option('focus_amv') || akina_option('focus_height')) $dis = 'display:none;';
$html = '<div id="video-container" style="'.$dis.'">';
$html .= '<video id="bgvideo" class="video" video-name="" src="" width="auto" preload="auto"></video>';
$html .= '<div id="video-btn" class="loadvideo videolive"></div>';
$html .= '<div id="video-add"></div>';
$html .= '<div class="video-stu"></div>';
$html .= '</div>';
return $html;
}
/*
* 使用本地图片作为头像,防止外源抽风问题
*/
function get_avatar_profile_url(){
if(akina_option('focus_logo')){
$avatar = akina_option('focus_logo');
}else{
$avatar = get_avatar_url(get_the_author_meta( 'ID' ));
}
return $avatar;
}
/*
* 首页随机背景图
* NB: I can think of this
*/
function get_random_bg_url(){
$arr = array();
for($i=0; $i<6; $i++){
if(akina_option('focus_img_'.$i)){
$arr[] = akina_option('focus_img_'.$i);
}
}
$url = rand(0, count($arr)-1);
return $arr[$url];
}
/*
* 订制时间样式
* poi_time_since(strtotime($post->post_date_gmt));
* poi_time_since(strtotime($comment->comment_date_gmt), true );
*/
function poi_time_since( $older_date, $comment_date = false, $text = false ) {
$chunks = array(
array( 24 * 60 * 60, __( ' 天前', 'akina' ) ),
array( 60 * 60, __( ' 小时前', 'akina' ) ),
array( 60, __( ' 分钟前', 'akina' ) ),
array( 1, __( ' 秒前', 'akina' ) )
);
$newer_date = time();
$since = abs( $newer_date - $older_date );
if($text){
$output = '';
}else{
$output = '发布于 ';
}
if ( $since < 30 * 24 * 60 * 60 ) {
for ( $i = 0, $j = count( $chunks ); $i < $j; $i ++ ) {
$seconds = $chunks[ $i ][0];
$name = $chunks[ $i ][1];
if ( ( $count = floor( $since / $seconds ) ) != 0 ) {
break;
}
}
$output .= $count . $name;
} else {
$output .= $comment_date ? date( 'Y-m-d H:i', $older_date ) : date( 'Y-m-d', $older_date );
}
return $output;
}
/*
* 首页不显示指定的分类文章
*/
if(akina_option('classify_display')){
function classify_display($query){
$source = akina_option('classify_display');
$cats = explode(',', $source);
$cat = '';
if ( $query->is_home ) {
foreach($cats as $k => $v) {
$cat .= '-'.$v.','; //重组字符串
}
$cat = trim($cat,',');
$query->set( 'cat', $cat);
}
return $query;
}
add_filter( 'pre_get_posts', 'classify_display' );
}
/*
* 评论添加@
*/
function comment_add_at( $comment_text, $comment = '') {
if( $comment->comment_parent > 0) {
$comment_text = '<a href="#comment-' . $comment->comment_parent . '" class="comment-at">@'.get_comment_author( $comment->comment_parent ) . '</a><br/> ' . $comment_text;
}
return $comment_text;
}
add_filter( 'comment_text' , 'comment_add_at', 20, 2);
/*
* Ajax评论
*/
if ( version_compare( $GLOBALS['wp_version'], '4.4-alpha', '<' ) ) { wp_die('请升级到4.4以上版本'); }
// 提示
if(!function_exists('siren_ajax_comment_err')) {
function siren_ajax_comment_err($t) {
header('HTTP/1.0 500 Internal Server Error');
header('Content-Type: text/plain;charset=UTF-8');
echo $t;
exit;
}
}
// 机器评论验证
function siren_robot_comment(){
if ( !$_POST['no-robot'] && !is_user_logged_in()) {
siren_ajax_comment_err('上车请打卡。');
}
}
if(akina_option('norobot')) add_action('pre_comment_on_post', 'siren_robot_comment');
// 纯英文评论拦截
function scp_comment_post( $incoming_comment ) {
if(!preg_match('/[一-龥]/u', $incoming_comment['comment_content'])){
siren_ajax_comment_err('写点汉字吧博主外语很捉急。You should type some Chinese word.');
}
return( $incoming_comment );
}
add_filter('preprocess_comment', 'scp_comment_post');
// 评论提交
if(!function_exists('siren_ajax_comment_callback')) {
function siren_ajax_comment_callback(){
$comment = wp_handle_comment_submission( wp_unslash( $_POST ) );
if( is_wp_error( $comment ) ) {
$data = $comment->get_error_data();
if ( !empty( $data ) ) {
siren_ajax_comment_err($comment->get_error_message());
} else {
exit;
}
}
$user = wp_get_current_user();
do_action('set_comment_cookies', $comment, $user);
$GLOBALS['comment'] = $comment; //根据你的评论结构自行修改,如使用默认主题则无需修改
?>
<li <?php comment_class(); ?> id="comment-<?php echo esc_attr(comment_ID()); ?>">
<div class="contents">
<div class="comment-arrow">
<div class="main shadow">
<div class="profile">
<a href="<?php comment_author_url(); ?>"><?php echo get_avatar( $comment->comment_author_email, '80', '', get_comment_author() ); ?></a>
</div>
<div class="commentinfo">
<section class="commeta">
<div class="left">
<h4 class="author"><a href="<?php comment_author_url(); ?>"><?php echo get_avatar( $comment->comment_author_email, '80', '', get_comment_author() ); ?><?php comment_author(); ?> <span class="isauthor" title="<?php esc_attr_e('Author', 'akina'); ?>"></span></a></h4>
</div>
<div class="right">
<div class="info"><time datetime="<?php comment_date('Y-m-d'); ?>"><?php echo poi_time_since(strtotime($comment->comment_date_gmt), true );//comment_date(get_option('date_format')); ?></time></div>
</div>
</section>
</div>
<div class="body">
<?php comment_text(); ?>
</div>
</div>
<div class="arrow-left"></div>
</div>
</div>
</li>
<?php die();
}
}
add_action('wp_ajax_nopriv_ajax_comment', 'siren_ajax_comment_callback');
add_action('wp_ajax_ajax_comment', 'siren_ajax_comment_callback');
/*
* 前台登陆
*/
// 指定登录页面
if(akina_option('exlogin_url')){
add_action('login_enqueue_scripts','login_protection');
function login_protection(){
if($_GET['word'] != 'press'){
$admin_url = akina_option('exlogin_url');
wp_redirect( $admin_url );
exit;
}
}
}
// 登陆跳转
function Exuser_center(){ ?>
<script language='javascript' type='text/javascript'>
var secs = 5; //倒计时的秒数
var URL;
var TYPE;
function gopage(url,type){
URL = url;
if(type == 1){
TYPE = '管理后台';
}else{
TYPE = '主页';
}
for(var i=secs;i>=0;i--){
window.setTimeout('doUpdate(' + i + ')', (secs-i) * 1000);
}
}
function doUpdate(num){
document.getElementById('login-showtime').innerHTML = '空降成功,'+num+'秒后自动转到'+TYPE;
if(num == 0) { window.location=URL; }
}
</script>
<?php if(current_user_can('level_10')){ ?>
<div class="admin-login-check">
<?php echo login_ok(); ?>
<?php if(akina_option('login_urlskip')){ ?><script>gopage("${context!}/wp-admin/",1);</script><?php } ?>
</div>
<?php }else{ ?>
<div class="user-login-check">
<?php echo login_ok(); ?>
<?php if(akina_option('login_urlskip')){ ?><script>gopage("${blog_url!}",0);</script><?php } ?>
</div>
<?php
}
}
// 登录成功
function login_ok(){
global $current_user;
get_currentuserinfo();
?>
<p class="ex-login-avatar"><a href="http://cn.gravatar.com/" title="更换头像" target="_blank" rel="nofollow"><?php echo get_avatar( $current_user->user_email, '110' ); ?></a></p>
<p class="ex-login-username">你好,<strong><?php echo $current_user->display_name; ?></strong></p>
<?php if($current_user->user_email){echo '<p>'.$current_user->user_email.'</p>';} ?>
<p id="login-showtime"></p>
<p class="ex-logout">
<a href="${blog_url!}" title="首页">首页</a>
<?php if(current_user_can('level_10')){ ?>
<a href="${context!}/wp-admin/" title="后台" target="_top">后台</a>
<?php } ?>
<a href="<?php echo wp_logout_url(get_bloginfo('url')); ?>" title="登出" target="_top">登出?</a>
</p>
<?php
}
/*
* 文章,页面头部背景图
*/
function the_headPattern(){
$t = ''; // 标题
$full_image_url = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), 'full');
if(is_single()){
$full_image_url = $full_image_url[0];
if (have_posts()) : while (have_posts()) : the_post();
$center = 'single-center';
$header = 'single-header';
$ava = akina_option('focus_logo', '') ? akina_option('focus_logo', '') : get_avatar_url(get_the_author_meta('user_email'));
$t .= the_title( '<h1 class="entry-title">', '</h1>', false);
$t .= '<p class="entry-census"><span><a href="'. esc_url(get_author_posts_url(get_the_author_meta('ID'),get_the_author_meta( 'user_nicename' ))) .'"><img src="'. $ava .'"></a></span><span><a href="'. esc_url(get_author_posts_url(get_the_author_meta('ID'),get_the_author_meta( 'user_nicename' ))) .'">'. get_the_author() .'</a></span><span class="bull">·</span>'. poi_time_since(get_post_time('U', true),false,true) .'<span class="bull">·</span>'. get_post_views(get_the_ID()) .' 次阅读</p>';
endwhile; endif;
}elseif(is_page()){
$full_image_url = $full_image_url[0];
$t .= the_title( '<h1 class="entry-title">', '</h1>', false);
}elseif(is_archive()){
$full_image_url = z_taxonomy_image_url();
$des = category_description() ? category_description() : ''; // 描述
$t .= '<h1 class="cat-title">'.single_cat_title('', false).'</h1>';
$t .= ' <span class="cat-des">'.$des.'</span>';
}elseif(is_search()){
$full_image_url = get_random_bg_url();
$t .= '<h1 class="entry-title search-title"> 关于“ '.get_search_query().' ”的搜索结果</h1>';
}
if(akina_option('patternimg')) $full_image_url = false;
if(!is_home() && $full_image_url) : ?>
<div class="pattern-center <?php if(is_single()){echo $center;} ?>">
<div class="pattern-attachment-img" style="background-image: url(<?php echo $full_image_url; ?>)"> </div>
<header class="pattern-header <?php if(is_single()){echo $header;} ?>"><?php echo $t; ?></header>
</div>
<?php else :
echo '<div class="blank"></div>';
endif;
}
/*
* 导航栏用户菜单
*/
function header_user_menu(){
global $current_user;get_currentuserinfo();
if(is_user_logged_in()){
$ava = akina_option('focus_logo') ? akina_option('focus_logo') : get_avatar_url( $current_user->user_email );
?>
<div class="header-user-avatar">
<img src="<?php echo $ava; ?>" width="30" height="30">
<div class="header-user-menu">
<div class="herder-user-name">Signed in as
<div class="herder-user-name-u"><?php echo $current_user->display_name; ?></div>
</div>
<div class="user-menu-option">
<?php if (current_user_can('level_10')) { ?>
<a href="${context!}/wp-admin/" target="_top">管理中心</a>
<a href="${context!}/wp-admin/post-new.php" target="_top">撰写文章</a>
<?php } ?>
<a href="${context!}/wp-admin/profile.php" target="_top">个人资料</a>
<a href="<?php echo wp_logout_url(get_bloginfo('url')); ?>" target="_top">退出登录</a>
</div>
</div>
</div>
<?php
}else{
$ava = get_template_directory_uri().'/images/none.png';
$login_url = akina_option('exlogin_url') ? akina_option('exlogin_url') : get_bloginfo('url').'/wp-login.php';
?>
<div class="header-user-avatar">
<a href="<?php echo $login_url; ?>">
<img src="<?php echo $ava; ?>" width="30" height="30">
</a>
<div class="header-user-menu">
<div class="herder-user-name no-logged">Whether to log in now ?
<a href="<?php echo $login_url; ?>">Sign in</a>
</div>
</div>
</div>
<?php
}
}
/*
* 获取相邻文章缩略图
* 特色图 -> 文章图 -> 首页图
*/
// 上一篇
function get_prev_thumbnail_url() {
$prev_post = get_previous_post();
if ( has_post_thumbnail($prev_post->ID) ) {
$img_src = wp_get_attachment_image_src( get_post_thumbnail_id( $prev_post->ID ), 'large');
return $img_src[0]; // 特色图
}
else {
$content = $prev_post->post_content;
preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER);
$n = count($strResult[1]);
if($n > 0){
return $strResult[1][0]; // 文章图
}else{
return get_random_bg_url(); // 首页图
}
}
}
// 下一篇
function get_next_thumbnail_url() {
$next_post = get_next_post();
if ( has_post_thumbnail($next_post->ID) ) {
$img_src = wp_get_attachment_image_src( get_post_thumbnail_id( $next_post->ID ), 'large');
return $img_src[0];
}
else {
$content = $next_post->post_content;
preg_match_all('/<img.*?(?: |\\t|\\r|\\n)?src=[\'"]?(.+?)[\'"]?(?:(?: |\\t|\\r|\\n)+.*?)?>/sim', $content, $strResult, PREG_PATTERN_ORDER);
$n = count($strResult[1]);
if($n > 0){
return $strResult[1][0];
}else{
return get_random_bg_url();
}
}
}
/**
* 文章摘要
*/
function changes_post_excerpt_more( $more ) {
return ' ...';
}
function changes_post_excerpt_length( $length ) {
return 65;
}
add_filter( 'excerpt_more', 'changes_post_excerpt_more' );
add_filter( 'excerpt_length', 'changes_post_excerpt_length', 999 );
/*
* SEO优化
*/
// 外部链接自动加nofollow
add_filter( 'the_content', 'siren_auto_link_nofollow');
function siren_auto_link_nofollow( $content ) {
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>";
if(preg_match_all("/$regexp/siU", $content, $matches, PREG_SET_ORDER)) {
if( !empty($matches) ) {
$srcUrl = get_option('siteurl');
for ($i=0; $i < count($matches); $i++){
$tag = $matches[$i][0];
$tag2 = $matches[$i][0];
$url = $matches[$i][0];
$noFollow = '';
$pattern = '/target\s*=\s*"\s*_blank\s*"/';
preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
if( count($match) < 1 )
$noFollow .= ' target="_blank" ';
$pattern = '/rel\s*=\s*"\s*[n|d]ofollow\s*"/';
preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE);
if( count($match) < 1 )
$noFollow .= ' rel="nofollow" ';
$pos = strpos($url,$srcUrl);
if ($pos === false) {
$tag = rtrim ($tag,'>');
$tag .= $noFollow.'>';
$content = str_replace($tag2,$tag,$content);
}
}
}
}
$content = str_replace(']]>', ']]>', $content);
return $content;
}
// 图片自动加标题
add_filter('the_content', 'siren_auto_images_alt');
function siren_auto_images_alt($content) {
global $post;
$pattern ="/<a(.*?)href=('|\")(.*?).(bmp|gif|jpeg|jpg|png)('|\")(.*?)>/i";
$replacement = '<a$1href=$2$3.$4$5 alt="'.$post->post_title.'" title="'.$post->post_title.'"$6>';
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
// 分类页面全部添加斜杠利于SEO
function siren_nice_trailingslashit($string, $type_of_url) {
if ( $type_of_url != 'single' )
$string = trailingslashit($string);
return $string;
}
add_filter('user_trailingslashit', 'siren_nice_trailingslashit', 10, 2);
// 去除链接显示categroy
add_action( 'load-themes.php', 'no_category_base_refresh_rules');
add_action('created_category', 'no_category_base_refresh_rules');
add_action('edited_category', 'no_category_base_refresh_rules');
add_action('delete_category', 'no_category_base_refresh_rules');
function no_category_base_refresh_rules() {
global $wp_rewrite;
$wp_rewrite -> flush_rules();
}
// Remove category base
add_action('init', 'no_category_base_permastruct');
function no_category_base_permastruct() {
global $wp_rewrite, $wp_version;
if (version_compare($wp_version, '3.4', '<')) {
} else {
$wp_rewrite -> extra_permastructs['category']['struct'] = '%category%';
}
}
// Add our custom category rewrite rules
add_filter('category_rewrite_rules', 'no_category_base_rewrite_rules');
function no_category_base_rewrite_rules($category_rewrite) {
//var_dump($category_rewrite); // For Debugging
$category_rewrite = array();
$categories = get_categories(array('hide_empty' => false));
foreach ($categories as $category) {
$category_nicename = $category -> slug;
if ($category -> parent == $category -> cat_ID)// recursive recursion
$category -> parent = 0;
elseif ($category -> parent != 0)
$category_nicename = get_category_parents($category -> parent, false, '/', true) . $category_nicename;
$category_rewrite['(' . $category_nicename . ')/(?:feed/)?(feed|rdf|rss|rss2|atom)/?$'] = 'index.php?category_name=$matches[1]&feed=$matches[2]';
$category_rewrite['(' . $category_nicename . ')/page/?([0-9]{1,})/?$'] = 'index.php?category_name=$matches[1]&paged=$matches[2]';
$category_rewrite['(' . $category_nicename . ')/?$'] = 'index.php?category_name=$matches[1]';
}
// Redirect support from Old Category Base
global $wp_rewrite;
$old_category_base = get_option('category_base') ? get_option('category_base') : 'category';
$old_category_base = trim($old_category_base, '/');
$category_rewrite[$old_category_base . '/(.*)$'] = 'index.php?category_redirect=$matches[1]';
//var_dump($category_rewrite); // For Debugging
return $category_rewrite;
}
// Add 'category_redirect' query variable
add_filter('query_vars', 'no_category_base_query_vars');
function no_category_base_query_vars($public_query_vars) {
$public_query_vars[] = 'category_redirect';
return $public_query_vars;
}
// Redirect if 'category_redirect' is set
add_filter('request', 'no_category_base_request');
function no_category_base_request($query_vars) {
//print_r($query_vars); // For Debugging
if (isset($query_vars['category_redirect'])) {
$catlink = trailingslashit(get_option('home')) . user_trailingslashit($query_vars['category_redirect'], 'category');
status_header(301);
header("Location: $catlink");
exit();
}
return $query_vars;
}
// 去除链接显示categroy END ~
/**
* 更改作者页链接为昵称显示
*/
// Replace the user name using the nickname, query by user ID
add_filter( 'request', 'siren_request' );
function siren_request( $query_vars ){
if ( array_key_exists( 'author_name', $query_vars ) ) {
global $wpdb;
$author_id = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key='nickname' AND meta_value = %s", $query_vars['author_name'] ) );
if ( $author_id ) {
$query_vars['author'] = $author_id;
unset( $query_vars['author_name'] );
}
}
return $query_vars;
}
// Replace a user name in a link with a nickname
add_filter( 'author_link', 'siren_author_link', 10, 3 );
function siren_author_link( $link, $author_id, $author_nicename ){
$author_nickname = get_user_meta( $author_id, 'nickname', true );
if ( $author_nickname ) {
$link = str_replace( $author_nicename, $author_nickname, $link );
}
return $link;
}
/*
* 私密评论
* @bigfa
*/
function siren_private_message_hook($comment_content , $comment){
$comment_ID = $comment->comment_ID;
$parent_ID = $comment->comment_parent;
$parent_email = get_comment_author_email($parent_ID);
$is_private = get_comment_meta($comment_ID,'_private',true);
$email = $comment->comment_author_email;
$current_commenter = wp_get_current_commenter();
if ( $is_private ) $comment_content = '#私密# ' . $comment_content;
if ( $current_commenter['comment_author_email'] == $email || $parent_email == $current_commenter['comment_author_email'] || current_user_can('delete_user') ) return $comment_content;
if ( $is_private ) return '该评论为私密评论';
return $comment_content;
}
add_filter('get_comment_text','siren_private_message_hook',10,2);
function siren_mark_private_message($comment_id){
if ( $_POST['is-private'] ) {
update_comment_meta($comment_id,'_private','true');
}
}
add_action('comment_post', 'siren_mark_private_message');
/*
* 删除后台某些版权和链接
* @wpdx
*/
add_filter('admin_title', 'wpdx_custom_admin_title', 10, 2);
function wpdx_custom_admin_title($admin_title, $title){
return $title.' &lsaquo; '.get_bloginfo('name');
}
//去掉Wordpress LOGO
function remove_logo($wp_toolbar) {
$wp_toolbar->remove_node('wp-logo');
}
add_action('admin_bar_menu', 'remove_logo', 999);
//去掉Wordpress 底部版权
function change_footer_admin () {return '';}
add_filter('admin_footer_text', 'change_footer_admin', 9999);
function change_footer_version() {return '';}
add_filter( 'update_footer', 'change_footer_version', 9999);
//去掉Wordpres挂件
function disable_dashboard_widgets() {
//remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');//近期评论
//remove_meta_box('dashboard_recent_drafts', 'dashboard', 'normal');//近期草稿
remove_meta_box('dashboard_primary', 'dashboard', 'core');//wordpress博客
remove_meta_box('dashboard_secondary', 'dashboard', 'core');//wordpress其它新闻
remove_meta_box('dashboard_right_now', 'dashboard', 'core');//wordpress概况
//remove_meta_box('dashboard_incoming_links', 'dashboard', 'core');//wordresss链入链接
//remove_meta_box('dashboard_plugins', 'dashboard', 'core');//wordpress链入插件
//remove_meta_box('dashboard_quick_press', 'dashboard', 'core');//wordpress快速发布
}
add_action('admin_menu', 'disable_dashboard_widgets');
/**
* 获取用户UA信息
*/
// 浏览器信息
function siren_get_browsers($ua){
$title = 'unknow';
$icon = 'unknow';
if (preg_match('#MSIE ([a-zA-Z0-9.]+)#i', $ua, $matches)) {
$title = 'Internet Explorer '. $matches[1];
if ( strpos($matches[1], '7') !== false || strpos($matches[1], '8') !== false)
$icon = 'ie8';
elseif ( strpos($matches[1], '9') !== false)
$icon = 'ie9';
elseif ( strpos($matches[1], '10') !== false)
$icon = 'ie10';
else
$icon = 'ie';
}elseif (preg_match('#Edge/([a-zA-Z0-9.]+)#i', $ua, $matches)){
$title = 'Microsoft Edge '. $matches[1];
$icon = 'edge';
}elseif (preg_match('#Firefox/([a-zA-Z0-9.]+)#i', $ua, $matches)){
$title = 'Firefox '. $matches[1];
$icon = 'firefox';
}elseif (preg_match('#CriOS/([a-zA-Z0-9.]+)#i', $ua, $matches)){
$title = 'Chrome for iOS '. $matches[1];
$icon = 'crios';
}elseif (preg_match('#Chrome/([a-zA-Z0-9.]+)#i', $ua, $matches)) {
$title = 'Google Chrome '. $matches[1];
$icon = 'chrome';
if (preg_match('#OPR/([a-zA-Z0-9.]+)#i', $ua, $matches)) {
$title = 'Opera '. $matches[1];
$icon = 'opera15';
if (preg_match('#opera mini#i', $ua)) $title = 'Opera Mini'. $matches[1];
}
}elseif (preg_match('#Safari/([a-zA-Z0-9.]+)#i', $ua, $matches)) {
$title = 'Safari '. $matches[1];
$icon = 'safari';
}elseif (preg_match('#Opera.(.*)Version[ /]([a-zA-Z0-9.]+)#i', $ua, $matches)) {
$title = 'Opera '. $matches[2];
$icon = 'opera';
if (preg_match('#opera mini#i', $ua)) $title = 'Opera Mini'. $matches[2];
}elseif (preg_match('#Maxthon( |\/)([a-zA-Z0-9.]+)#i', $ua,$matches)) {
$title = 'Maxthon '. $matches[2];
$icon = 'maxthon';
}elseif (preg_match('#360([a-zA-Z0-9.]+)#i', $ua, $matches)) {
$title = '360 Browser '. $matches[1];
$icon = '360se';
}elseif (preg_match('#SE 2([a-zA-Z0-9.]+)#i', $ua, $matches)) {
$title = 'SouGou Browser 2'.$matches[1];
$icon = 'sogou';
}elseif (preg_match('#UCWEB([a-zA-Z0-9.]+)#i', $ua, $matches)) {
$title = 'UCWEB '. $matches[1];
$icon = 'ucweb';
}elseif(preg_match('#wp-(iphone|android)/([a-zA-Z0-9.]+)#i', $ua, $matches)){ // 1.2 增加 wordpress 客户端的判断
$title = 'wordpress '. $matches[2];
$icon = 'wordpress';
}
return array(
$title,
$icon
);
}
// 操作系统信息
function siren_get_os($ua){
$title = 'unknow';
$icon = 'unknow';
if (preg_match('/win/i', $ua)) {
if (preg_match('/Windows NT 10.0/i', $ua)) {
$title = "Windows 10";
$icon = "windows_win10";
}elseif (preg_match('/Windows NT 6.1/i', $ua)) {
$title = "Windows 7";
$icon = "windows_win7";
}elseif (preg_match('/Windows NT 5.1/i', $ua)) {
$title = "Windows XP";
$icon = "windows";
}elseif (preg_match('/Windows NT 6.2/i', $ua)) {
$title = "Windows 8";
$icon = "windows_win8";
}elseif (preg_match('/Windows NT 6.3/i', $ua)) {
$title = "Windows 8.1";
$icon = "windows_win8";
}elseif (preg_match('/Windows NT 6.0/i', $ua)) {
$title = "Windows Vista";
$icon = "windows_vista";
}elseif (preg_match('/Windows NT 5.2/i', $ua)) {
if (preg_match('/Win64/i', $ua)) {
$title = "Windows XP 64 bit";
} else {
$title = "Windows Server 2003";
}
$icon = 'windows';
}elseif (preg_match('/Windows Phone/i', $ua)) {
$matches = explode(';',$ua);
$title = $matches[2];
$icon = "windows_phone";
}
}elseif (preg_match('#iPod.*.CPU.([a-zA-Z0-9.( _)]+)#i', $ua, $matches)) {
$title = "iPod ".$matches[1];
$icon = "iphone";
} elseif (preg_match('#iPhone OS ([a-zA-Z0-9.( _)]+)#i', $ua, $matches)) {// 1.2 修改成 iphone os 来判断
$title = "Iphone ".$matches[1];
$icon = "iphone";
} elseif (preg_match('#iPad.*.CPU.([a-zA-Z0-9.( _)]+)#i', $ua, $matches)) {
$title = "iPad ".$matches[1];
$icon = "ipad";
} elseif (preg_match('/Mac OS X.([0-9. _]+)/i', $ua, $matches)) {
if(count(explode(7,$matches[1]))>1) $matches[1] = 'Lion '.$matches[1];
elseif(count(explode(8,$matches[1]))>1) $matches[1] = 'Mountain Lion '.$matches[1];
$title = "Mac OSX ".$matches[1];
$icon = "macos";
} elseif (preg_match('/Macintosh/i', $ua)) {
$title = "Mac OS";
$icon = "macos";
} elseif (preg_match('/CrOS/i', $ua)){
$title = "Google Chrome OS";
$icon = "chrome";
}elseif (preg_match('/Linux/i', $ua)) {
$title = 'Linux';
$icon = 'linux';
if (preg_match('/Android.([0-9. _]+)/i',$ua, $matches)) {
$title= $matches[0];
$icon = "android";
}elseif (preg_match('#Ubuntu#i', $ua)) {
$title = "Ubuntu Linux";
$icon = "ubuntu";
}elseif(preg_match('#Debian#i', $ua)) {
$title = "Debian GNU/Linux";
$icon = "debian";
}elseif (preg_match('#Fedora#i', $ua)) {
$title = "Fedora Linux";
$icon = "fedora";
}
}
return array(
$title,
$icon
);
}
function siren_get_useragent($ua){
if(akina_option('open_useragent')){
$imgurl = get_bloginfo('template_directory') . '/images/ua/';
$browser = siren_get_browsers($ua);
$os = siren_get_os($ua);
return '&nbsp;&nbsp;<span class="useragent-info">( <img src="'. $imgurl.$browser[1] .'.png">&nbsp;'. $browser[0] .'&nbsp;&nbsp;<img src="'. $imgurl.$os[1] .'.png">&nbsp;'. $os[0] .' )</span>';
}
return false;
}
/*
* 打赏
*/
function the_reward(){
$alipay = akina_option('alipay_code');
$wechat = akina_option('wechat_code');
if($alipay || $wechat){
$alipay = $alipay ? '<li class="alipay-code"><img src="'.$alipay.'"></li>' : '';
$wechat = $wechat ? '<li class="wechat-code"><img src="'.$wechat.'"></li>' : '';
?>
<div class="single-reward">
<div class="reward-open">
<div class="reward-main">
<ul class="reward-row">
<?php echo $alipay.$wechat; ?>
</ul>
</div>
</div>
</div>
<?php
}
}

60
index.ftl Normal file
View File

@ -0,0 +1,60 @@
<#--
@package Akina
-->
<#include "header.ftl">
<@header title="${blog_title!}">
<div class="blank"></div>
</@header>
<#if settings.head_notice!false && settings.notice_title!=''>
<div class="notice">
<i class="iconfont">&#xe66b;</i>
<div class="notice-content">${settings.notice_title!}</div>
</div>
</#if>
<#if settings.top_feature!true>
<#include "layouts/feature.ftl">
</#if>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<h1 class="main-title">Posts</h1>
<#if posts?? && posts.getTotalElements() gt 0>
<#--Start the Loop-->
<#if (settings.post_list_style!'standard') == 'standard'>
<#list posts.content as post>
<#include "tpl/content.ftl">
</#list>
<#else>
<#include "tpl/content-thumb.ftl">
</#if>
<#else>
<#include "tpl/content-none.ftl">
</#if>
</main><!-- #main -->
<@paginationTag method="index" page="${posts.number}" total="${posts.totalPages}" display="3">
<#if (settings.pagenav_style!'ajax') == 'ajax'>
<div id="pagination">
<#if pagination.hasNext>
<a href="${pagination.nextPageFullPath!}" class="">下一页</a>
<#else>
<span>没有更多文章了</span>
</#if>
</div>
<#else>
<nav class="navigator">
<#if pagination.hasPrev>
<a href="${pagination.prevPageFullPath!}"><i class="iconfont">&#xe679;</i></a>
</#if>
<#if pagination.hasNext>
<a href="${pagination.nextPageFullPath!}"><i class="iconfont">&#xe6a3;</i></a>
</#if>
</nav>
</#if>
</@paginationTag>
</div><!-- #primary -->
<#include "footer.ftl">

492
js/app.js Normal file
View File

@ -0,0 +1,492 @@
/*
* Siren application js
* @author Louie
* @url http://i94.me
* @date 2016.11.19
*/
// baguetteBox Libs
var baguetteBox = function () {
function t(t, n) {
H.transforms = f(), H.svg = g(), e(), j = document.querySelectorAll(t), [].forEach.call(j, function (t) {
n && n.filter && (A = n.filter);
var e = t.getElementsByTagName("a");
e = [].filter.call(e, function (t) {
return A.test(t.href)
});
var o = D.length;
D.push(e), D[o].options = n, [].forEach.call(D[o], function (t, e) {
m(t, "click", function (t) {
t.preventDefault ? t.preventDefault() : t.returnValue = !1, i(o), a(e)
})
})
})
}
function e() {
return (b = v("baguetteBox-overlay")) ? (k = v("baguetteBox-slider"), w = v("previous-button"), C = v("next-button"), T = v("close-button"), void 0) : (b = y("div"), b.id = "baguetteBox-overlay", document.getElementsByTagName("body")[0].appendChild(b), k = y("div"), k.id = "baguetteBox-slider", b.appendChild(k), w = y("button"), w.id = "previous-button", w.innerHTML = H.svg ? E : "&lt;", b.appendChild(w), C = y("button"), C.id = "next-button", C.innerHTML = H.svg ? x : "&gt;", b.appendChild(C), T = y("button"), T.id = "close-button", T.innerHTML = H.svg ? B : "X", b.appendChild(T), w.className = C.className = T.className = "baguetteBox-button", n(), void 0)
}
function n() {
m(b, "click", function (t) {
t.target && "IMG" !== t.target.nodeName && "FIGCAPTION" !== t.target.nodeName && r()
}), m(w, "click", function (t) {
t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0, c()
}), m(C, "click", function (t) {
t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0, u()
}), m(T, "click", function (t) {
t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0, r()
}), m(b, "touchstart", function (t) {
N = t.changedTouches[0].pageX
}), m(b, "touchmove", function (t) {
S || (t.preventDefault ? t.preventDefault() : t.returnValue = !1, touch = t.touches[0] || t.changedTouches[0], touch.pageX - N > 40 ? (S = !0, c()) : touch.pageX - N < -40 && (S = !0, u()))
}), m(b, "touchend", function () {
S = !1
}), m(document, "keydown", function (t) {
switch (t.keyCode) {
case 37:
c();
break;
case 39:
u();
break;
case 27:
r()
}
})
}
function i(t) {
if (M !== t) {
for (M = t, o(D[t].options); k.firstChild;) k.removeChild(k.firstChild);
X.length = 0;
for (var e, n = 0; n < D[t].length; n++) e = y("div"), e.className = "full-image", e.id = "baguette-img-" + n, X.push(e), k.appendChild(X[n])
}
}
function o(t) {
t || (t = {});
for (var e in P) I[e] = P[e], "undefined" != typeof t[e] && (I[e] = t[e]);
k.style.transition = k.style.webkitTransition = "fadeIn" === I.animation ? "opacity .4s ease" : "slideIn" === I.animation ? "" : "none", "auto" === I.buttons && ("ontouchstart" in window || 1 === D[M].length) && (I.buttons = !1), w.style.display = C.style.display = I.buttons ? "" : "none"
}
function a(t) {
"block" !== b.style.display && (L = t, s(L, function () {
p(L), h(L)
}), d(), b.style.display = "block", setTimeout(function () {
b.className = "visible", I.afterShow && I.afterShow()
}, 50), I.onChange && I.onChange(L, X.length))
}
function r() {
"none" !== b.style.display && (b.className = "", setTimeout(function () {
b.style.display = "none", I.afterHide && I.afterHide()
}, 500))
}
function s(t, e) {
var n = X[t];
if ("undefined" != typeof n) {
if (n.getElementsByTagName("img")[0]) return e && e(), void 0;
imageElement = D[M][t], imageCaption = "function" == typeof I.captions ? I.captions.call(D[M], imageElement) : imageElement.getAttribute("data-caption") || imageElement.title, imageSrc = l(imageElement);
var i = y("figure"),
o = y("img"),
a = y("figcaption");
n.appendChild(i), i.innerHTML = '<div class="spinner"><div class="double-bounce1"></div><div class="double-bounce2"></div></div>', o.onload = function () {
var n = document.querySelector("#baguette-img-" + t + " .spinner");
i.removeChild(n), !I.async && e && e()
}, o.setAttribute("src", imageSrc), i.appendChild(o), I.captions && imageCaption && (a.innerHTML = imageCaption, i.appendChild(a)), I.async && e && e()
}
}
function l(t) {
var e = imageElement.href;
if (t.dataset) {
var n = [];
for (var i in t.dataset) "at-" !== i.substring(0, 3) || isNaN(i.substring(3)) || (n[i.replace("at-", "")] = t.dataset[i]);
keys = Object.keys(n).sort(function (t, e) {
return parseInt(t) < parseInt(e) ? -1 : 1
});
for (var o = window.innerWidth * window.devicePixelRatio, a = 0; a < keys.length - 1 && keys[a] < o;) a++;
e = n[keys[a]] || e
}
return e
}
function u() {
var t;
return L <= X.length - 2 ? (L++, d(), p(L), t = !0) : I.animation && (k.className = "bounce-from-right", setTimeout(function () {
k.className = ""
}, 400), t = !1), I.onChange && I.onChange(L, X.length), t
}
function c() {
var t;
return L >= 1 ? (L--, d(), h(L), t = !0) : I.animation && (k.className = "bounce-from-left", setTimeout(function () {
k.className = ""
}, 400), t = !1), I.onChange && I.onChange(L, X.length), t
}
function d() {
var t = 100 * -L + "%";
"fadeIn" === I.animation ? (k.style.opacity = 0, setTimeout(function () {
H.transforms ? k.style.transform = k.style.webkitTransform = "translate3d(" + t + ",0,0)" : k.style.left = t, k.style.opacity = 1
}, 400)) : H.transforms ? k.style.transform = k.style.webkitTransform = "translate3d(" + t + ",0,0)" : k.style.left = t
}
function f() {
var t = y("div");
return "undefined" != typeof t.style.perspective || "undefined" != typeof t.style.webkitPerspective
}
function g() {
var t = y("div");
return t.innerHTML = "<svg/>", "http://www.w3.org/2000/svg" == (t.firstChild && t.firstChild.namespaceURI)
}
function p(t) {
t - L >= I.preload || s(t + 1, function () {
p(t + 1)
})
}
function h(t) {
L - t >= I.preload || s(t - 1, function () {
h(t - 1)
})
}
function m(t, e, n) {
t.addEventListener ? t.addEventListener(e, n, !1) : t.attachEvent("on" + e, n)
}
function v(t) {
return document.getElementById(t)
}
function y(t) {
return document.createElement(t)
}
var b, k, w, C, T, N,
E = '<svg width="44" height="60"><polyline points="30 10 10 30 30 50" stroke="rgba(255,255,255,.8)" stroke-width="4"stroke-linecap="butt" fill="none" stroke-linejoin="round"/></svg>',
x = '<svg width="44" height="60"><polyline points="14 10 34 30 14 50" stroke="rgba(255,255,255,.8)" stroke-width="4"stroke-linecap="butt" fill="none" stroke-linejoin="round"/></svg>',
B = '<svg width="30" height="30"><g stroke="rgba(255,255,255,.8)" stroke-width="4"><line x1="5" y1="5" x2="25" y2="25"/><line x1="5" y1="25" x2="25" y2="5"/></g></svg>',
I = {},
P = {
captions: !0,
buttons: "auto",
async: !1,
preload: 2,
animation: "slideIn",
afterShow: null,
afterHide: null,
onChange: null
},
H = {},
L = 0,
M = -1,
S = !1,
A = /.+\.(gif|jpe?g|png|webp)/i,
j = [],
D = [],
X = [];
return [].forEach || (Array.prototype.forEach = function (t, e) {
for (var n = 0; n < this.length; n++) t.call(e, this[n], n, this)
}), [].filter || (Array.prototype.filter = function (t, e, n, i, o) {
for (n = this, i = [], o = 0; o < n.length; o++) t.call(e, n[o], o, n) && i.push(n[o]);
return i
}), {
run: t,
showNext: u,
showPrevious: c
}
}();
var home = location.href,
Siren = {
// 移动端菜单
MN: function () {
$('.iconflat').on('click', function () {
$('body').toggleClass('navOpen');
$('#main-container,#mo-nav,.openNav').toggleClass('open');
});
},
// 移动端菜单自动隐藏
MNH: function () {
if ($('body').hasClass('navOpen')) {
$('body').toggleClass('navOpen');
$('#main-container,#mo-nav,.openNav').toggleClass('open');
}
},
// 自适应窗口高度
AH: function () {
if (Poi.windowheight == 'auto') {
if ($('h1.main-title').length > 0) {
var _height = $(window).height();
$('#centerbg').css({'height': _height});
$(window).resize(function () {
Siren.AH();
});
}
} else {
$('.headertop').addClass('headertop-bar');
}
},
// 进程
PE: function () {
if ($('.headertop').length > 0) {
if ($('h1.main-title').length > 0) {
$('.blank').css({"padding-top": "0px"});
$('.headertop').css({"height": "auto"}).show();
} else {
$('.blank').css({"padding-top": "80px"});
$('.headertop').css({"height": "0px"}).hide();
}
}
},
// 点击事件
CE: function () {
// 显示&隐藏评论
$('.comments-hidden').show();
$('.comments-main').hide();
$('.comments-hidden').click(function () {
$('.comments-main').slideDown(500);
$('.comments-hidden').hide();
});
// 归档页
$('.archives').hide();
$('.archives:first').show();
$('#archives-temp h3').click(function () {
$(this).next().slideToggle('fast');
return false;
});
// 灯箱
baguetteBox.run('.entry-content', {
captions: function (element) {
return element.getElementsByTagName('img')[0].alt;
}
});
// 搜索框
$('.js-toggle-search').on('click', function () {
$('.js-toggle-search').toggleClass('is-active');
$('.js-search').toggleClass('is-visible');
});
$('.search_close').on('click', function () {
if ($('.js-search').hasClass('is-visible')) {
$('.js-toggle-search').toggleClass('is-active');
$('.js-search').toggleClass('is-visible');
}
});
// 导航菜单
$('#show-nav').on('click', function () {
if ($('#show-nav').hasClass('showNav')) {
$('#show-nav').removeClass('showNav').addClass('hideNav');
$('.site-top .lower nav').addClass('navbar');
} else {
$('#show-nav').removeClass('hideNav').addClass('showNav');
$('.site-top .lower nav').removeClass('navbar');
}
});
// 过渡动画
$("#loading").click(function () {
$("#loading").fadeOut(500);
});
},
// 显示&隐藏导航栏
NH: function () {
var h1 = 0,
h2 = 50,
ss = $(document).scrollTop();
$(window).scroll(function () {
var s = $(document).scrollTop();
if (s == h1) {
$('.site-header').removeClass('yya');
}
if (s > h1) {
$('.site-header').addClass('yya');
}
if (s > h2) {
$('.site-header').addClass('gizle');
if (s > ss) {
$('.site-header').removeClass('sabit');
} else {
$('.site-header').addClass('sabit');
}
ss = s;
}
});
},
// Ajax加载文章
XLS: function () {
$body = (window.opera) ? (document.compatMode == "CSS1Compat" ? $('html') : $('body')) : $('html,body');
$('body').on('click', '#pagination a', function () {
$(this).addClass("loading").text("");
$.ajax({
type: "GET",
url: $(this).attr("href") + "#main",
success: function (data) {
result = $(data).find("#main .post");
nextHref = $(data).find("#pagination a").attr("href");
// In the new content
$("#main").append(result.fadeIn(500));
$("#pagination a").removeClass("loading").text("下一页");
if (nextHref != undefined) {
$("#pagination a").attr("href", nextHref);
} else {
// If there is no link, that is the last page, then remove the navigation
$("#pagination").html("<span>没有更多文章了</span>");
}
}
});
return false;
});
},
// 输入框特效
IA: function () {
POWERMODE.colorful = true; // make power mode colorful
POWERMODE.shake = false; // turn off shake
document.body.addEventListener('input', POWERMODE)
},
// 返回顶部
GT: function () {
var offset = 100,
offset_opacity = 1200,
scroll_top_duration = 700,
$back_to_top = $('.cd-top');
$(window).scroll(function () {
($(this).scrollTop() > offset) ? $back_to_top.addClass('cd-is-visible') : $back_to_top.removeClass('cd-is-visible cd-fade-out');
if ($(this).scrollTop() > offset_opacity) {
$back_to_top.addClass('cd-fade-out');
}
});
//smooth scroll to top
$back_to_top.on('click', function (event) {
event.preventDefault();
$('body,html').animate({
scrollTop: 0,
}, scroll_top_duration
);
});
}
};
// Executive function
$(function () {
Siren.AH(); // 自适应窗口高度
Siren.PE(); // 进程
Siren.NH(); // 显示&隐藏导航栏
Siren.GT(); // 返回顶部
Siren.XLS(); // Ajax文章列表
Siren.CE(); // 点击事件
Siren.MN(); // 移动端菜单
Siren.IA(); // 输入框特效
if (Poi.pjax) {
$(document).pjax('a[target!=_top]', '#page', {
fragment: '#page',
timeout: 8000,
}).on('pjax:send', function () {
NProgress.start();
Siren.MNH();
}).on('pjax:complete', function () {
Siren.AH();
Siren.PE();
Siren.CE();
NProgress.done();
$("#loading").fadeOut(500);
if (Poi.codelamp == 'open') {
self.Prism.highlightAll(event)
}
}).on('submit', '.search-form,.s-search', function (event) {
event.preventDefault();
$.pjax.submit(event, '#page', {
fragment: '#page',
timeout: 8000,
});
if ($('.js-search.is-visible').length > 0) {
$('.js-toggle-search').toggleClass('is-active');
$('.js-search').toggleClass('is-visible');
}
});
window.addEventListener('popstate', function (e) {
Siren.AH();
Siren.PE();
Siren.CE();
}, false);
}
// 点赞
$.fn.postLike = function () {
if ($(this).hasClass('done')) {
return false;
} else {
$(this).addClass('done');
var id = $(this).data("id"),
action = $(this).data('action'),
rateHolder = $(this).children('.count');
var ajax_data = {
action: "specs_zan",
um_id: id,
um_action: action
};
$.post(Poi.ajaxurl, ajax_data,
function (data) {
$(rateHolder).html(data);
});
return false;
}
};
$(document).on("click", ".specsZan", function () {
$(this).postLike();
});
console.log("%c Github %c", "background:#24272A; color:#ffffff", "", "https://github.com/louie-senpai");
});
/*
* File skip-link-focus-fix.js.
* Helps with accessibility for keyboard only users.
* Learn more: https://git.io/vWdr2
*/
var isWebkit = navigator.userAgent.toLowerCase().indexOf('webkit') > -1,
isOpera = navigator.userAgent.toLowerCase().indexOf('opera') > -1,
isIe = navigator.userAgent.toLowerCase().indexOf('msie') > -1;
if ((isWebkit || isOpera || isIe) && document.getElementById && window.addEventListener) {
window.addEventListener('hashchange', function () {
var id = location.hash.substring(1),
element;
if (!(/^[A-z0-9_-]+$/.test(id))) {
return;
}
element = document.getElementById(id);
if (element) {
if (!(/^(?:a|select|input|button|textarea)$/i.test(element.tagName))) {
element.tabIndex = -1;
}
element.focus();
}
}, false);
}

1
js/input.min.js vendored Normal file
View File

@ -0,0 +1 @@
(function webpackUniversalModuleDefinition(b,a){if(typeof exports==="object"&&typeof module==="object"){module.exports=a()}else{if(typeof define==="function"&&define.amd){define([],a)}else{if(typeof exports==="object"){exports.POWERMODE=a()}else{b.POWERMODE=a()}}}})(this,function(){return(function(c){var b={};function a(e){if(b[e]){return b[e].exports}var d=b[e]={exports:{},id:e,loaded:false};c[e].call(d.exports,d,d.exports,a);d.loaded=true;return d.exports}a.m=c;a.c=b;a.p="";return a(0)})([function(j,e,a){var b=document.createElement("canvas");b.width=window.innerWidth;b.height=window.innerHeight;b.style.cssText="position:fixed;top:0;left:0;pointer-events:none;z-index:999999";window.addEventListener("resize",function(){b.width=window.innerWidth;b.height=window.innerHeight});document.body.appendChild(b);var c=b.getContext("2d");var l=[];var k=0;m.shake=true;function h(o,n){return Math.random()*(n-o)+o}function g(n){if(m.colorful){var o=h(0,360);return"hsla("+h(o-10,o+10)+", 100%, "+h(50,80)+"%, "+1+")"}else{return window.getComputedStyle(n).color}}function f(){var o=document.activeElement;var n;if(o.tagName==="TEXTAREA"||(o.tagName==="INPUT"&&o.getAttribute("type")==="text")){var p=a(1)(o,o.selectionStart);n=o.getBoundingClientRect();return{x:p.left+n.left,y:p.top+n.top,color:g(o)}}var r=window.getSelection();if(r.rangeCount){var q=r.getRangeAt(0);var s=q.startContainer;if(s.nodeType===document.TEXT_NODE){s=s.parentNode}n=q.getBoundingClientRect();return{x:n.left,y:n.top,color:g(s)}}return{x:0,y:0,color:"transparent"}}function d(o,p,n){return{x:o,y:p,alpha:1,color:n,velocity:{x:-1+Math.random()*2,y:-3.5+Math.random()*2}}}function m(){var n=f();var p=5+Math.round(Math.random()*10);while(p--){l[k]=d(n.x,n.y,n.color);k=(k+1)%500}if(m.shake){var o=1+2*Math.random();var q=o*(Math.random()>0.5?-1:1);var r=o*(Math.random()>0.5?-1:1);document.body.style.marginLeft=q+"px";document.body.style.marginTop=r+"px";setTimeout(function(){document.body.style.marginLeft="";document.body.style.marginTop=""},75)}}m.colorful=false;function i(){requestAnimationFrame(i);c.clearRect(0,0,b.width,b.height);for(var n=0;n<l.length;++n){var o=l[n];if(o.alpha<=0.1){continue}o.velocity.y+=0.075;o.x+=o.velocity.x;o.y+=o.velocity.y;o.alpha*=0.96;c.globalAlpha=o.alpha;c.fillStyle=o.color;c.fillRect(Math.round(o.x-1.5),Math.round(o.y-1.5),3,3)}}requestAnimationFrame(i);j.exports=m},function(b,a){(function(){var e=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];var d=window.mozInnerScreenX!=null;function c(k,m,l){var h=l&&l.debug||false;if(h){var j=document.querySelector("#input-textarea-caret-position-mirror-div");if(j){j.parentNode.removeChild(j)}}var i=document.createElement("div");i.id="input-textarea-caret-position-mirror-div";document.body.appendChild(i);var o=i.style;var f=window.getComputedStyle?getComputedStyle(k):k.currentStyle;o.whiteSpace="pre-wrap";if(k.nodeName!=="INPUT"){o.wordWrap="break-word"}o.position="absolute";if(!h){o.visibility="hidden"}e.forEach(function(p){o[p]=f[p]});if(d){if(k.scrollHeight>parseInt(f.height)){o.overflowY="scroll"}}else{o.overflow="hidden"}i.textContent=k.value.substring(0,m);if(k.nodeName==="INPUT"){i.textContent=i.textContent.replace(/\s/g,"\u00a0")}var n=document.createElement("span");n.textContent=k.value.substring(m)||".";i.appendChild(n);var g={top:n.offsetTop+parseInt(f.borderTopWidth),left:n.offsetLeft+parseInt(f.borderLeftWidth)};if(h){n.style.backgroundColor="#aaa"}else{document.body.removeChild(i)}return g}if(typeof b!="undefined"&&typeof b.exports!="undefined"){b.exports=c}else{window.getCaretCoordinates=c}}())}])});

2
js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1415
js/jquery.pjax.js Normal file

File diff suppressed because it is too large Load Diff

18
layouts/authorprofile.ftl Normal file
View File

@ -0,0 +1,18 @@
<#--
AUTHOR PROFILE
-->
<#if settings.author_profile!true>
<section class="author-profile">
<div class="info" itemprop="author" itemscope="" itemtype="http://schema.org/Person">
<a href="${blog_url!}" class="profile gravatar"><img src="${user.avatar!}" itemprop="image" alt="${user.nickname!}" height="70" width="70"></a>
<div class="meta">
<span class="title">${user.nickname!}</span>
<h3 itemprop="name">
<a href="${blog_url!}" itemprop="url" rel="author">${user.nickname!}</a>
</h3>
</div>
</div>
<hr>
<p><i class="iconfont">&#xe761;</i>${user.description!'Carpe Diem and Do what I like'}</p>
</section>
</#if>

29
layouts/feature.ftl Normal file
View File

@ -0,0 +1,29 @@
<div class="top-feature">
<h1 class="fes-title">${settings.feature_title!'聚焦'}</h1>
<div class="feature-content">
<li class="feature-1">
<a href="${settings.feature1_link!'#'}" target="_blank">
<div class="feature-title">
<span class="foverlay">${settings.feature1_title!'feature1'}</span>
</div>
<img src="${settings.feature1_img!'${theme_base!}/images/temp.jpg'}">
</a>
</li>
<li class="feature-2">
<a href="${settings.feature2_link!'#'}" target="_blank">
<div class="feature-title">
<span class="foverlay">${settings.feature2_title!'feature2'}</span>
</div>
<img src="${settings.feature2_img!'${theme_base!}/images/temp.jpg'}">
</a>
</li>
<li class="feature-3">
<a href="${settings.feature3_link!'#'}" target="_blank">
<div class="feature-title">
<span class="foverlay">${settings.feature3_title!'feature3'}</span>
</div>
<img src="${settings.feature3_img!'${theme_base!}/images/temp.jpg'}">
</a>
</li>
</div>
</div>

64
layouts/imgbox.ftl Normal file
View File

@ -0,0 +1,64 @@
<figure id="centerbg" class="centerbg" style="background-image: url('${settings.focus_img_1!}');
<#if !(settings.focus_height!true)>
background-position: center center;background-attachment: inherit;
</#if>
">
<#if settings.focus_infos!true>
<div class="focusinfo">
<#if user.avatar??>
<div class="header-tou"><a href="${blog_url!}" ><img src="${user.avatar!}"></a></div>
<#else>
<div class="header-tou" ><a href="${blog_url!}"><img src="${theme_base!}/images/avatar.jpg"></a></div>
</#if>
<div class="header-info"><p>${user.description!'Carpe Diem and Do what I like'}</p></div>
<div class="top-social">
<#if settings.wechat??>
<li class="wechat"><a href="#"><img src="${theme_base!}/images/sns/wechat.png"/></a>
<div class="wechatInner">
<img src="${settings.wechat!}" alt="微信公众号">
</div>
</li>
</#if>
<#if settings.sina??>
<li><a href="${settings.sina!}" target="_blank" class="social-sina" title="sina"><img src="${theme_base!}/images/sns/sina.png"/></a></li>
</#if>
<#if settings.qq??>
<li class="qq"><a href="//wpa.qq.com/msgrd?v=3&uin=${settings.qq!}&site=qq&menu=yes" target="_blank" title="Initiate chat ?"><img src="${theme_base!}/images/sns/qq.png"/></a></li>
</#if>
<#if settings.qzone??>
<li><a href="${settings.qzone!}" target="_blank" class="social-qzone" title="qzone"><img src="${theme_base!}/images/sns/qzone.png"/></a></li>
</#if>
<#if settings.github??>
<li><a href="${settings.github!}" target="_blank" class="social-github" title="github"><img src="${theme_base!}/images/sns/github.png"/></a></li>
</#if>
<#if settings.lofter??>
<li><a href="${settings.lofter!}" target="_blank" class="social-lofter" title="lofter"><img src="${theme_base!}/images/sns/lofter.png"/></a></li>
</#if>
<#if settings.bili??>
<li><a href="${settings.bili!}" target="_blank" class="social-bili" title="bilibili"><img src="${theme_base!}/images/sns/bilibili.png"/></a></li>
</#if>
<#if settings.wangyiyun??>
<li><a href="${settings.wangyiyun!}" target="_blank" class="social-wangyiyun" title="CloudMusic"><img src="${theme_base!}/images/sns/wangyiyun.png"/></a></li>
</#if>
<#if settings.twitter??>
<li><a href="${settings.twitter!}" target="_blank" class="social-wangyiyun" title="Twitter"><img src="${theme_base!}/images/sns/twitter.png"/></a></li>
</#if>
<#if settings.facebook??>
<li><a href="${settings.facebook!}" target="_blank" class="social-wangyiyun" title="Facebook"><img src="${theme_base!}/images/sns/facebook.png"/></a></li>
</#if>
<#if settings.googleplus??>
<li><a href="${settings.googleplus!}" target="_blank" class="social-wangyiyun" title="Google+"><img src="${theme_base!}/images/sns/googleplus.png"/></a></li>
</#if>
<#if settings.jianshu??>
<li><a href="${settings.jianshu!}" target="_blank" class="social-wangyiyun" title="简书"><img src="${theme_base!}/images/sns/jianshu.png"/></a></li>
</#if>
<#if settings.zhihu??>
<li><a href="${settings.zhihu!}" target="_blank" class="social-wangyiyun" title="知乎"><img src="${theme_base!}/images/sns/zhihu.png"/></a></li>
</#if>
<#if settings.csdn??>
<li><a href="${settings.csdn!}" target="_blank" class="social-wangyiyun" title="CSDN"><img src="${theme_base!}/images/sns/csdn.png"/></a></li>
</#if>
</div>
</div>
</#if>
</figure>

21
layouts/post-nextprev.ftl Normal file
View File

@ -0,0 +1,21 @@
<#--
NEXT / PREVIOUS POSTS (精华版)
-->
<#if settings.post_nepre!true>
<section class="post-squares nextprev">
<#if prevPost??>
<div class="post-nepre <#if nextPost??>half<#else>full</#if> previous">
<a href="${prevPost.fullPath!}" rel="prev">
<div class="background" style="background-image:url('${prevPost.thumbnail!}');"></div><span class="label">Previous Post</span><div class="info"><h3>${prevPost.title!}</h3><hr></div>
</a>
</div>
</#if>
<#if nextPost??>
<div class="post-nepre <#if prevPost??>half<#else>full</#if> next">
<a href="${nextPost.fullPath!}" rel="next">
<div class="background" style="background-image:url('${nextPost.thumbnail!}');"></div><span class="label">Next Post</span><div class="info"><h3>${nextPost.title!}</h3><hr></div>
</a>
</div>
</#if>
</section>
</#if>

22
layouts/sharelike.ftl Normal file
View File

@ -0,0 +1,22 @@
<#--
sharelike
-->
<#--<#if settings.post_like!true>-->
<#--<div class="post-like">-->
<#--<a href="javascript:;" data-action="ding" data-id="${post.id?c}" class="specsZan">-->
<#-- <i class="iconfont">&#xe669;</i> <span class="count">-->
<#-- ${post.likes?c}-->
<#-- </a>-->
<#--</div>-->
<#--</#if>-->
<#if settings.post_share!true>
<div class="post-share">
<ul class="sharehidden">
<li><a href="http://www.jiathis.com/send/?webid=weixin&url=${post.fullPath!}&title=${post.title!}" onclick="window.open(this.href, 'renren-share', 'width=490,height=700');return false;" class="s-weixin"><img src="${theme_base!}/images/sns/wechat.png"/></a></li>
<li><a href="http://www.jiathis.com/send/?webid=qzone&url=${post.fullPath!}&title=${post.title!}" onclick="window.open(this.href, 'weibo-share', 'width=730,height=500');return false;" class="s-qq"><img src="${theme_base!}/images/sns/qzone.png"/></a></li>
<li><a href="http://www.jiathis.com/send/?webid=tsina&url=${post.fullPath!}&title=${post.title!}" onclick="window.open(this.href, 'weibo-share', 'width=550,height=235');return false;" class="s-sina"><img src="${theme_base!}/images/sns/sina.png"/></a></li>
<li><a href="http://www.jiathis.com/send/?webid=douban&url=${post.fullPath!}&title=${post.title!}" onclick="window.open(this.href, 'renren-share', 'width=490,height=600');return false;" class="s-douban"><img src="${theme_base!}/images/sns/douban.png"/></a></li>
</ul>
<i class="iconfont show-share">&#xe6eb;</i>
</div>
</#if>

36
links.ftl Normal file
View File

@ -0,0 +1,36 @@
<#--
Template Name: links
-->
<#include "header.ftl">
<@header title="友情链接 - ${blog_title!}">
<#if (settings.patternimg!true) && (settings.links_patternimg?? && settings.links_patternimg!='')>
<div class="pattern-center">
<div class="pattern-attachment-img" style="background-image: url(${settings.links_patternimg!})"> </div>
<header class="pattern-header">
<h1 class="entry-title">友情链接</h1>
</header>
</div>
<#else>
<div class="blank"></div>
</#if>
</@header>
<#if !(settings.patternimg!true) || !(settings.links_patternimg?? && settings.links_patternimg!='')>
<span class="linkss-title">友情链接</span>
</#if>
<article <?php post_class("post-item"); ?>
<div class="links">
<ul class="link-items fontSmooth">
<@linkTag method="list">
<#list links as link>
<li class="link-item">
<a class="link-item-inner effect-apollo" href="${link.url!}" title="${link.name!}" target="_blank">
<span class="sitename">${link.name!}</span>
<div class="linkdes">${link.description!}</div>
</a>
</li>
</#list>
</@linkTag>
</ul>
</div>
</article>
<#include "footer.ftl">

View File

@ -0,0 +1,228 @@
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism-coy&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
/**
* prism.js Coy theme for JavaScript, CoffeeScript, CSS and HTML
* Based on https://github.com/tshedor/workshop-wp-theme (Example: http://workshop.kansan.com/category/sessions/basics or http://workshop.timshedor.com/category/sessions/basics);
* @author Tim Shedor
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
position: relative;
margin: .5em 0;
overflow: visible;
padding: 0;
}
pre[class*="language-"]>code {
position: relative;
border-left: 10px solid #358ccb;
box-shadow: -1px 0px 0px 0px #358ccb, 0px 0px 0px 1px #dfdfdf;
background-color: #fdfdfd;
background-image: linear-gradient(transparent 50%, rgba(69, 142, 209, 0.04) 50%);
background-size: 3em 3em;
background-origin: content-box;
background-attachment: local;
}
code[class*="language"] {
max-height: inherit;
height: inherit;
padding: 0 1em;
display: block;
overflow: auto;
}
/* Margin bottom to accommodate shadow */
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background-color: #fdfdfd;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin-bottom: 1em;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
position: relative;
padding: .2em;
border-radius: 0.3em;
color: #c92c2c;
border: 1px solid rgba(0, 0, 0, 0.1);
display: inline;
white-space: normal;
}
pre[class*="language-"]:before,
pre[class*="language-"]:after {
content: '';
z-index: -2;
display: block;
position: absolute;
bottom: 0.75em;
left: 0.18em;
width: 40%;
height: 20%;
max-height: 13em;
box-shadow: 0px 13px 8px #979797;
-webkit-transform: rotate(-2deg);
-moz-transform: rotate(-2deg);
-ms-transform: rotate(-2deg);
-o-transform: rotate(-2deg);
transform: rotate(-2deg);
}
:not(pre) > code[class*="language-"]:after,
pre[class*="language-"]:after {
right: 0.75em;
left: auto;
-webkit-transform: rotate(2deg);
-moz-transform: rotate(2deg);
-ms-transform: rotate(2deg);
-o-transform: rotate(2deg);
transform: rotate(2deg);
}
.token.comment,
.token.block-comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #7D8B99;
}
.token.punctuation {
color: #5F6364;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.function-name,
.token.constant,
.token.symbol,
.token.deleted {
color: #c92c2c;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.function,
.token.builtin,
.token.inserted {
color: #2f9c0a;
}
.token.operator,
.token.entity,
.token.url,
.token.variable {
color: #a67f59;
background: rgba(255, 255, 255, 0.5);
}
.token.atrule,
.token.attr-value,
.token.keyword,
.token.class-name {
color: #1990b8;
}
.token.regex,
.token.important {
color: #e90;
}
.language-css .token.string,
.style .token.string {
color: #a67f59;
background: rgba(255, 255, 255, 0.5);
}
.token.important {
font-weight: normal;
}
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.namespace {
opacity: .7;
}
@media screen and (max-width: 767px) {
pre[class*="language-"]:before,
pre[class*="language-"]:after {
bottom: 14px;
box-shadow: none;
}
}
/* Plugin styles */
.token.tab:not(:empty):before,
.token.cr:before,
.token.lf:before {
color: #e0d7d1;
}
/* Plugin styles: Line Numbers */
pre[class*="language-"].line-numbers.line-numbers {
padding-left: 0;
}
pre[class*="language-"].line-numbers.line-numbers code {
padding-left: 3.8em;
}
pre[class*="language-"].line-numbers.line-numbers .line-numbers-rows {
left: 0;
}
/* Plugin styles: Line Highlight */
pre[class*="language-"][data-line] {
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
}
pre[data-line] code {
position: relative;
padding-left: 4em;
}
pre .line-highlight {
margin-top: 0;
}

View File

@ -0,0 +1,131 @@
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism-dark&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
/**
* prism.js Dark theme for JavaScript, CSS and HTML
* Based on the slides of the talk /Reg(exp){2}lained/
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: white;
background: none;
text-shadow: 0 -.1em .2em black;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
pre[class*="language-"],
:not(pre) > code[class*="language-"] {
background: hsl(30, 20%, 25%);
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border: .3em solid hsl(30, 20%, 40%);
border-radius: .5em;
box-shadow: 1px 1px .5em black inset;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .15em .2em .05em;
border-radius: .3em;
border: .13em solid hsl(30, 20%, 40%);
box-shadow: 1px 1px .3em -.1em black inset;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: hsl(30, 20%, 50%);
}
.token.punctuation {
opacity: .7;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol {
color: hsl(350, 40%, 70%);
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: hsl(75, 70%, 60%);
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color: hsl(40, 90%, 60%);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: hsl(350, 40%, 70%);
}
.token.regex,
.token.important {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.token.deleted {
color: red;
}

View File

@ -0,0 +1,141 @@
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

View File

@ -0,0 +1,125 @@
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
/**
* okaidia theme for JavaScript, CSS and HTML
* Loosely based on Monokai textmate theme by http://www.monokai.nl/
* @author ocodia
*/
code[class*="language-"],
pre[class*="language-"] {
color: #f8f8f2;
background: none;
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border-radius: 0.3em;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #272822;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #f8f8f2;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
color: #f92672;
}
.token.boolean,
.token.number {
color: #ae81ff;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #a6e22e;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color: #f8f8f2;
}
.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
color: #e6db74;
}
.token.keyword {
color: #66d9ef;
}
.token.regex,
.token.important {
color: #fd971f;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

View File

@ -0,0 +1,152 @@
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism-solarizedlight&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
/*
Solarized Color Schemes originally by Ethan Schoonover
http://ethanschoonover.com/solarized
Ported for PrismJS by Hector Matos
Website: https://krakendev.io
Twitter Handle: https://twitter.com/allonsykraken)
*/
/*
SOLARIZED HEX
--------- -------
base03 #002b36
base02 #073642
base01 #586e75
base00 #657b83
base0 #839496
base1 #93a1a1
base2 #eee8d5
base3 #fdf6e3
yellow #b58900
orange #cb4b16
red #dc322f
magenta #d33682
violet #6c71c4
blue #268bd2
cyan #2aa198
green #859900
*/
code[class*="language-"],
pre[class*="language-"] {
color: #657b83; /* base00 */
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
background: #073642; /* base02 */
}
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
background: #073642; /* base02 */
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
border-radius: 0.3em;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background-color: #fdf6e3; /* base3 */
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #93a1a1; /* base1 */
}
.token.punctuation {
color: #586e75; /* base01 */
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #268bd2; /* blue */
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.url,
.token.inserted {
color: #2aa198; /* cyan */
}
.token.entity {
color: #657b83; /* base00 */
background: #eee8d5; /* base2 */
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #859900; /* green */
}
.token.function,
.token.class-name {
color: #b58900; /* yellow */
}
.token.regex,
.token.important,
.token.variable {
color: #cb4b16; /* orange */
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

View File

@ -0,0 +1,124 @@
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
/**
* prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
* Based on https://github.com/chriskempson/tomorrow-theme
* @author Rose Pritchard
*/
code[class*="language-"],
pre[class*="language-"] {
color: #ccc;
background: none;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #2d2d2d;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.block-comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #999;
}
.token.punctuation {
color: #ccc;
}
.token.tag,
.token.attr-name,
.token.namespace,
.token.deleted {
color: #e2777a;
}
.token.function-name {
color: #6196cc;
}
.token.boolean,
.token.number,
.token.function {
color: #f08d49;
}
.token.property,
.token.class-name,
.token.constant,
.token.symbol {
color: #f8c555;
}
.token.selector,
.token.important,
.token.atrule,
.token.keyword,
.token.builtin {
color: #cc99cd;
}
.token.string,
.token.char,
.token.attr-value,
.token.regex,
.token.variable {
color: #7ec699;
}
.token.operator,
.token.entity,
.token.url {
color: #67cdcc;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.token.inserted {
color: green;
}

View File

@ -0,0 +1,201 @@
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism-twilight&languages=markup+css+clike+javascript+apacheconf+applescript+c+csharp+autohotkey+bash+basic+cpp+aspnet+arduino+ruby+css-extras+d+dart+django+docker+markup-templating+git+go+groovy+less+haskell+http+hpkp+hsts+ini+java+javastacktrace+json+julia+kotlin+latex+markdown+lua+makefile+nginx+objectivec+opencl+perl+php+php-extras+sql+powershell+properties+scss+pure+python+r+jsx+typescript+rust+sass+stylus+scala+scheme+plsql+pug+swift+yaml+haml+toml+tsx+vbnet+velocity+vim+visual-basic */
/**
* prism.js Twilight theme
* Based (more or less) on the Twilight theme originally of Textmate fame.
* @author Remy Bach
*/
code[class*="language-"],
pre[class*="language-"] {
color: white;
background: none;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
text-shadow: 0 -.1em .2em black;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"],
:not(pre) > code[class*="language-"] {
background: hsl(0, 0%, 8%); /* #141414 */
}
/* Code blocks */
pre[class*="language-"] {
border-radius: .5em;
border: .3em solid hsl(0, 0%, 33%); /* #282A2B */
box-shadow: 1px 1px .5em black inset;
margin: .5em 0;
overflow: auto;
padding: 1em;
}
pre[class*="language-"]::-moz-selection {
/* Firefox */
background: hsl(200, 4%, 16%); /* #282A2B */
}
pre[class*="language-"]::selection {
/* Safari */
background: hsl(200, 4%, 16%); /* #282A2B */
}
/* Text Selection colour */
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */
}
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
text-shadow: none;
background: hsla(0, 0%, 93%, 0.15); /* #EDEDED */
}
/* Inline code */
:not(pre) > code[class*="language-"] {
border-radius: .3em;
border: .13em solid hsl(0, 0%, 33%); /* #545454 */
box-shadow: 1px 1px .3em -.1em black inset;
padding: .15em .2em .05em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: hsl(0, 0%, 47%); /* #777777 */
}
.token.punctuation {
opacity: .7;
}
.namespace {
opacity: .7;
}
.token.tag,
.token.boolean,
.token.number,
.token.deleted {
color: hsl(14, 58%, 55%); /* #CF6A4C */
}
.token.keyword,
.token.property,
.token.selector,
.token.constant,
.token.symbol,
.token.builtin {
color: hsl(53, 89%, 79%); /* #F9EE98 */
}
.token.attr-name,
.token.attr-value,
.token.string,
.token.char,
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable,
.token.inserted {
color: hsl(76, 21%, 52%); /* #8F9D6A */
}
.token.atrule {
color: hsl(218, 22%, 55%); /* #7587A6 */
}
.token.regex,
.token.important {
color: hsl(42, 75%, 65%); /* #E9C062 */
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
pre[data-line] {
padding: 1em 0 1em 3em;
position: relative;
}
/* Markup */
.language-markup .token.tag,
.language-markup .token.attr-name,
.language-markup .token.punctuation {
color: hsl(33, 33%, 52%); /* #AC885B */
}
/* Make the tokens sit above the line highlight so the colours don't look faded. */
.token {
position: relative;
z-index: 1;
}
.line-highlight {
background: hsla(0, 0%, 33%, 0.25); /* #545454 */
background: linear-gradient(to right, hsla(0, 0%, 33%, .1) 70%, hsla(0, 0%, 33%, 0)); /* #545454 */
border-bottom: 1px dashed hsl(0, 0%, 33%); /* #545454 */
border-top: 1px dashed hsl(0, 0%, 33%); /* #545454 */
left: 0;
line-height: inherit;
margin-top: 0.75em; /* Same as .prisms padding-top */
padding: inherit 0;
pointer-events: none;
position: absolute;
right: 0;
white-space: pre;
z-index: 0;
}
.line-highlight:before,
.line-highlight[data-end]:after {
background-color: hsl(215, 15%, 59%); /* #8794A6 */
border-radius: 999px;
box-shadow: 0 1px white;
color: hsl(24, 20%, 95%); /* #F5F2F0 */
content: attr(data-start);
font: bold 65%/1.5 sans-serif;
left: .6em;
min-width: 1em;
padding: 0 .5em;
position: absolute;
text-align: center;
text-shadow: none;
top: .4em;
vertical-align: .3em;
}
.line-highlight[data-end]:after {
bottom: .4em;
content: attr(data-end);
top: auto;
}

73
plugins/prism/js/prism.js Normal file

File diff suppressed because one or more lines are too long

36
post.ftl Normal file
View File

@ -0,0 +1,36 @@
<#--
@package Akina
-->
<#include "header.ftl">
<@header title="${post.title!} - ${blog_title!}">
<#if settings.patternimg!true && post.thumbnail?? && post.thumbnail!=''>
<div class="pattern-center single-center">
<div class="pattern-attachment-img" style="background-image: url('${post.thumbnail!}')"> </div>
<header class="pattern-header single-header">
<h1 class="entry-title">${post.title!}</h1>
<p class="entry-census">
<span>
<a href="${blog_url!}">
<img src="${user.avatar!}">
</a>
</span>
<span>
<a href="${blog_url!}">${user.nickname!}</a>
</span>
<span class="bull">·</span>${post.createTime?string('yyyy-MM-dd')}
<span class="bull">·</span>${post.visits!0} 次阅读
</p>
</header>
</div>
<#else>
<div class="blank"></div>
</#if>
</@header>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<#include "tpl/content-single.ftl">
<#include "layouts/post-nextprev.ftl">
<#include "layouts/authorprofile.ftl">
</main><!-- #main -->
</div><!-- #primary -->
<#include "footer.ftl">

BIN
screenshot.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

52
search.ftl Normal file
View File

@ -0,0 +1,52 @@
<#--
@package Akina
-->
<#include "header.ftl">
<@header title="${keyword!} - 搜索结果 - ${blog_title!}">
<#if (settings.patternimg!true) && (settings.searh_patternimg?? && settings.searh_patternimg!='')>
<div class="pattern-center">
<div class="pattern-attachment-img" style="background-image: url('${settings.searh_patternimg!}')"> </div>
<header class="pattern-header">
<h1 class="entry-title search-title"> 关于“ ${keyword!} ”的搜索结果</h1>
</header>
</div>
<#else>
<div class="blank"></div>
</#if>
</@header>
<section id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<#if posts?? && posts.content?size gt 0>
<#if !(settings.patternimg!true) || !(settings.searh_patternimg?? && settings.searh_patternimg!='')>
<header class="page-header">
<h1 class="page-title">搜索结果: <span>${keyword!}</span></h1>
</header><!-- .page-header -->
</#if>
<#list posts.content as post>
<#include "tpl/content.ftl">
</#list>
<nav class="navigator">
<@paginationTag method="search" page="${posts.number}" total="${posts.totalPages}" display="3" keyword="${keyword!}">
<#if pagination.hasPrev>
<a href="${pagination.prevPageFullPath!}"><i class="iconfont">&#xe679;</i></a>
</#if>
<#if pagination.hasNext>
<a href="${pagination.nextPageFullPath!}"><i class="iconfont">&#xe6a3;</i></a>
</#if>
</@paginationTag>
</nav>
<#else>
<div class="search-box">
<!-- search start -->
<form class="s-search">
<i class="iconfont">&#xe65c;</i>
<input class="text-input" type="search" name="s" placeholder="Search..." required>
</form>
<!-- search end -->
</div>
<#include "tpl/content-none.ftl">
</#if>
</main><!-- #main -->
</section><!-- #primary -->
<#include "footer.ftl">

404
settings.yaml Normal file
View File

@ -0,0 +1,404 @@
general:
label: 基本设置
items:
theme_skin:
name: theme_skin
label: 主题风格
type: color
default: '#FE9600'
shownav:
name: shownav
label: 展开导航菜单
type: radio
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
patternimg:
name: patternimg
label: 头部装饰图
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
archives_patternimg:
name: archives_patternimg
label: 归档页装饰图
type: attachment
description: '归档页面头部装饰图'
links_patternimg:
name: links_patternimg
label: 友链页装饰图
type: attachment
description: '友情链接页面头部装饰图'
searh_patternimg:
name: searh_patternimg
label: 搜索页装饰图
type: attachment
description: '搜索页面头部装饰图'
tag_patternimg:
name: tag_patternimg
label: 标签页默认装饰图
type: attachment
description: '标签下文章页面默认头部装饰图'
category_patternimg:
name: category_patternimg
label: 分类页默认装饰图
type: attachment
description: '分类下文章页面默认头部装饰图'
top_search:
name: top_search
label: 搜索按钮
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
post_list_style:
name: post_list_style
label: 首页文章风格
type: radio
data-type: string
default: standard
options:
- value: standard
label: 标准
- value: imageflow
label: 图文
list_type:
name: list_type
label: 首页文章特色图(仅对标准风格生效)
type: radio
data-type: string
default: round
options:
- value: round
label: 圆形
- value: square
label: 方形
pagenav_style:
name: pagenav_style
label: 分页模式
type: radio
data-type: string
default: ajax
options:
- value: ajax
label: ajax加载
- value: np
label: 上一页和下一页
site_custom_style:
name: site_custom_style
label: 自定义CSS样式
type: textarea
mainScreen:
label: 第一屏
items:
head_focus:
name: head_focus
label: 总开关
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
focus_infos:
name: focus_infos
label: 社交信息
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
focus_height:
name: focus_height
label: 全屏显示
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
focus_img_1:
name: focus_img_1
label: 背景图
type: attachment
default: '/louie_senpai_siren/images/hd.jpg'
# focus_img_2:
# name: focus_img_2
# label: 背景图 - 2
# type: attachment
# focus_img_3:
# name: focus_img_3
# label: 背景图 - 3
# type: attachment
# focus_img_4:
# name: focus_img_4
# label: 背景图 - 4
# type: attachment
# focus_img_5:
# name: focus_img_5
# label: 背景图 - 5
# type: attachment
focus_img_filter:
name: focus_img_filter
label: 背景图滤镜
type: select
default: filter-nothing
options:
- value: filter-nothing
label:
- value: filter-undertint
label: 浅色
- value: filter-dim
label: 暗淡
- value: filter-grid
label: 网格
post:
label: 文章页
items:
# post_like:
# name: post_like
# label: 文章点赞
# type: radio
# data-type: bool
# default: true
# options:
# - value: true
# label: 开启
# - value: false
# label: 关闭
post_share:
name: post_share
label: 文章分享
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
post_nepre:
name: post_nepre
label: 上一篇下一篇
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
author_profile:
name: author_profile
label: 博主信息
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
alipay_code:
name: alipay_code
label: 支付宝打赏
type: attachment
wechat_code:
name: wechat_code
label: 微信打赏
type: attachment
code_pretty:
name: code_pretty
label: 文章代码高亮主题
type: select
default: Default
options:
- value: Default
label: Default
- value: Coy
label: Coy
- value: Dark
label: Dark
- value: Okaidia
label: Okaidia
- value: Solarized Light
label: Solarized Light
- value: Tomorrow Night
label: Tomorrow Night
- value: Twilight
label: Twilight
sns:
label: 社交网络
items:
wechat:
name: wechat
label: 微信二维码
type: attachment
sina:
name: sina
label: 新浪微博
type: text
qq:
name: qq
label: 腾讯QQ
type: text
qzone:
name: qzone
label: QQ空间
type: text
github:
name: github
label: Github
type: text
lofter:
name: lofter
label: Lofter
type: text
bili:
name: bili
label: BiliBili
type: text
wangyiyun:
name: wangyiyun
label: 网易云音乐
type: text
twitter:
name: twitter
label: Twitter
type: text
facebook:
name: facebook
label: Facebook
type: text
googleplus:
name: googleplus
label: Google+
type: text
jianshu:
name: jianshu
label: 简书
type: text
csdn:
name: csdn
label: CSDN
type: text
zhihu:
name: zhihu
label: 知乎
type: text
focus:
label: 聚焦图
items:
top_feature:
name: top_feature
label: 是否开启聚焦
type: radio
data-type: bool
default: true
options:
- value: true
label: 开启
- value: false
label: 关闭
feature_title:
name: feature_title
label: 聚焦标题
type: text
default: '聚焦'
placeholder: '默认为聚焦,你也可以修改为其他,当然不能当广告用!不允许!!'
feature1_img:
name: feature1_img
label: 聚焦图一
type: attachment
placeholder: '尺寸257px*160px'
feature1_title:
name: feature1_title
label: 聚焦图一标题
type: text
default: 'feature1'
feature1_link:
name: feature1_link
label: 聚焦图一链接
type: text
default: '#'
feature2_img:
name: feature2_img
label: 聚焦图二
type: attachment
placeholder: '尺寸257px*160px'
feature2_title:
name: feature2_title
label: 聚焦图二标题
type: text
default: 'feature2'
feature2_link:
name: feature2_link
label: 聚焦图二链接
type: text
default: '#'
feature3_img:
name: feature3_img
label: 聚焦图三
type: attachment
placeholder: '尺寸257px*160px'
feature3_title:
name: feature3_title
label: 聚焦图三标题
type: text
default: 'feature3'
feature3_link:
name: feature3_link
label: 聚焦图三链接
type: text
default: '#'
others:
label: 其他
items:
poi_pjax:
name: poi_pjax
label: 开启PJAX局部刷新
type: radio
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
head_notice:
name: head_notice
label: 开启公告
type: radio
data-type: bool
default: false
options:
- value: true
label: 开启
- value: false
label: 关闭
notice_title:
name: notice_title
label: 公告内容
type: textarea
placeholder: '公告内容文字超出142个字节将会被滚动显示移动端无效一个汉字 = 3字节一个字母 = 1字节自己计算吧'

23
sheet.ftl Normal file
View File

@ -0,0 +1,23 @@
<#--
@package Akina
-->
<#include "header.ftl">
<@header title="${sheet.title!} - ${blog_title!}">
<#if (settings.patternimg!true) && (sheet.thumbnail?? && sheet.thumbnail!='')>
<div class="pattern-center">
<div class="pattern-attachment-img" style="background-image: url('${sheet.thumbnail!}')"> </div>
<header class="pattern-header">
<h1 class="entry-title">${sheet.title!}</h1>
</header>
</div>
<#else>
<div class="blank"></div>
</#if>
</@header>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<#include "tpl/content-page.ftl">
</main><!-- #main -->
</div><!-- #primary -->
<#include "footer.ftl">

20
sheet_links.ftl Normal file
View File

@ -0,0 +1,20 @@
<#--
/**
Template Name: links
*/
-->
<#include "header.ftl">
<@header title="${sheet.title!} - ${blog_title!}" />
<?php while(have_posts()) : the_post(); ?>
<?php if(akina_option('patternimg') || !get_post_thumbnail_id(get_the_ID())) { ?>
<span class="linkss-title"><?php the_title();?></span>
<?php } ?>
<article class="post-item post-${sheet.id} page type-page status-publish <#if sheet.thumbnail?? && sheet.thumbnail!=''>has-post-thumbnail</#if> hentry">
${sheet.formatContent!}
<div class="links">
<?php echo get_link_items(); ?>
</div>
</article>
<?php endwhile; ?>
<#include "footer.ftl">

24
single.ftl Normal file
View File

@ -0,0 +1,24 @@
<?php
/**
* The template for displaying all single posts.
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
*
* @package Akina
*/
get_header(); ?>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<?php
while ( have_posts() ) : the_post();
get_template_part( 'tpl/content', 'single' );
get_template_part('layouts/post','nextprev');
get_template_part('layouts/authorprofile');
endwhile; // End of the loop.
?>
</main><!-- #main -->
</div><!-- #primary -->
<?php
get_sidebar();
get_footer();

5695
style.css Normal file

File diff suppressed because it is too large Load Diff

65
tag.ftl Normal file
View File

@ -0,0 +1,65 @@
<#--
/**
* The template for displaying archive pages.
*
* @link https://codex.wordpress.org/Template_Hierarchy
*
* @package Akina
*/
-->
<#include "header.ftl">
<@header title="标签:${tag.name!} - ${blog_title!}">
<#if (settings.patternimg!true) && ((tag.thumbnail?? && tag.thumbnail!='') || (settings.tag_patternimg?? && settings.tag_patternimg!=''))>
<div class="pattern-center">
<div class="pattern-attachment-img" style="background-image: url(${tag.thumbnail!'${settings.tag_patternimg!}'})"> </div>
<header class="pattern-header">
<h1 class="cat-title">标签:${tag.name!}</h1>
</header>
</div>
<#else>
<div class="blank"></div>
</#if>
</@header>
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<#if posts?? && posts.content?size gt 0>
<#if !(settings.patternimg!true) || !((tag.thumbnail?? && tag.thumbnail!='') || (settings.tag_patternimg?? && settings.tag_patternimg!=''))>
<header class="page-header">
<h1 class="cat-title">${tag.name!}</h1>
<span class="cat-des">
</span>
</header><!-- .page-header -->
</#if>
<#-- Start the Loop -->
<#list posts.content as post>
<#include "tpl/content.ftl">
</#list>
<div class="clearer"></div>
<#else>
<#include "tpl/content-none.ftl">
</#if>
</main><!-- #main -->
<@paginationTag method="tagPosts" page="${posts.number}" total="${posts.totalPages}" display="3" slug="${tag.slug!}">
<#if (settings.pagenav_style!'ajax') == 'ajax'>
<div id="pagination">
<#if pagination.hasNext>
<a href="${pagination.nextPageFullPath!}" class="">下一页</a>
<#else>
<span>没有更多文章了</span>
</#if>
</div>
<#else>
<nav class="navigator">
<#if pagination.hasPrev>
<a href="${pagination.prevPageFullPath!}"><i class="iconfont">&#xe679;</i></a>
</#if>
<#if pagination.hasNext>
<a href="${pagination.nextPageFullPath!}"><i class="iconfont">&#xe6a3;</i></a>
</#if>
</nav>
</#if>
</@paginationTag>
</div><!-- #primary -->
<#include "footer.ftl">

11
theme.yaml Normal file
View File

@ -0,0 +1,11 @@
id: LIlGG_Sakura
name: Sakura
author:
name: LIlGG
website: https://lixingyong.com
description: halo版本的樱花🌸主题
logo:
website: https://github.com/LIlGG/halo-theme-Sakura
repo: https://github.com/LIlGG/halo-theme-Sakura
version: 1.0.0
require: 1.3.0

34
tpl/content-category.ftl Normal file
View File

@ -0,0 +1,34 @@
<#--
@package Akina
-->
<article class="post works-list" itemscope="" itemtype="http://schema.org/BlogPosting">
<div class="works-entry">
<div class="works-main">
<div class="works-feature">
<#if post.thumbnail?? && post.thumbnail!=''>
<a href="${post.fullPath!}" style="background-image: url(${post.thumbnail!});"></a>
<#else>
<a href="${post.fullPath!}" style="background-image: url(${theme_base!}/images/temp.jpg);"></a>
</#if>
</div>
<div class="works-overlay">
<h1 class="works-title"><a href="${post.fullPath!}">${post.title!}</a></h1>
<div class="works-p-time">
<i class="iconfont">&#xe74a;</i> ${post.createTime?string("yyyy-MM-dd")}
</div>
<div class="works-meta">
<div class="works-comnum">
<span><i class="iconfont">&#xe731;</i> <?php comments_popup_link('暂无', '1 ', '% '); ?></span>
</div>
<div class="works-views">
<span><i class="iconfont">&#xe73d;</i> ${post.visits?c} </span>
</div>
</div>
<a class="worksmore" href="${post.fullPath!}"></a>
</div>
<!-- .entry-footer -->
</div>
</div>
</article><!-- #post-## -->

27
tpl/content-none.ftl Normal file
View File

@ -0,0 +1,27 @@
<#--
@package Akina
-->
<section class="no-results not-found">
<header class="page-header">
<h1 class="page-title">没有找到任何东西!</h1>
</header><!-- .page-header -->
<div class="page-content">
<#if is_search??>
<div class="sorry">
<p>没有找到你想要的,看看其他的吧。</p>
<div class="sorry-inner">
<ul class="search-no-reasults">
<@postTag method="latest" top="10">
<#list posts as post>
<li><a href="${post.fullPath!}" title="${post.title!}">${post.title!}</a> </li>
</#list>
</@postTag>
</ul>
</div>
</div>
<#else>
<p>我们似乎没有找到你想要的东西. 或许你可以搜索一下试试.</p>
</#if>
</div><!-- .page-content -->
</section><!-- .no-results -->

16
tpl/content-page.ftl Normal file
View File

@ -0,0 +1,16 @@
<#--
@package Akina
-->
<article id="post-${sheet.id!}" class="post-item post-${sheet.id} page type-page status-publish hentry">
<#if !(settings.patternimg!true) || !(sheet.thumbnail?? || sheet.thumbnail!='')>
<header class="entry-header">
<h1 class="entry-title">${sheet.title!}</h1>
</header><!-- .entry-header -->
</#if>
<div class="entry-content">
${sheet.formatContent!}
</div><!-- .entry-content -->
<footer class="entry-footer">
</footer><!-- .entry-footer -->
</article><!-- #post-## -->

22
tpl/content-search.ftl Normal file
View File

@ -0,0 +1,22 @@
<#--
@package Akina
-->
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<?php the_title(sprintf('<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url(get_permalink())), '</a></h2>'); ?>
<?php if ('post' === get_post_type()) : ?>
<div class="entry-meta">
<?php akina_posted_on(); ?>
</div><!-- .entry-meta -->
<?php endif; ?>
</header><!-- .entry-header -->
<div class="entry-summary">
<?php the_excerpt(); ?>
</div><!-- .entry-summary -->
<footer class="entry-footer">
<?php akina_entry_footer(); ?>
</footer><!-- .entry-footer -->
</article><!-- #post-## -->

46
tpl/content-single.ftl Normal file
View File

@ -0,0 +1,46 @@
<#--
@package Akina
-->
<article id="post-${post.id?c}" <?php post_class(); ?>
<#if !(settings.patternimg!true) || !(post.thumbnail?? || post.thumbnail!='')>
<header class="entry-header">
<h1 class="entry-title">${post.title!}</h1>
<p class="entry-census">${post.createTime?string('yyyy-MM-dd')}
&nbsp;&nbsp;${post.visits!0} 次阅读</p>
<hr>
</header><!-- .entry-header -->
</#if>
<div class="entry-content">
${post.formatContent!}
</div><!-- .entry-content -->
<#if settings.alipay_code?? || settings.wechat_code??>
<div class="single-reward">
<div class="reward-open">赏
<div class="reward-main">
<ul class="reward-row">
<#if settings.alipay_code?? && settings.alipay_code!=''>
<li class="alipay-code"><img src="${settings.alipay_code!}"></li>
</#if>
<#if settings.wechat_code?? && settings.wechat_code!=''>
<li class="wechat-code"><img src="${settings.wechat_code!}"></li>
</#if>
</ul>
</div>
</div>
</div>
</#if>
<footer class="post-footer">
<div class="post-lincenses">
<a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" target="_blank" rel="nofollow">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>
</div>
<div class="post-tags">
<#if tags?? && tags?size gt 0>
<i class="iconfont">&#xe68c;</i>
<#list tags as tag>
<a href="${tag.fullPath!}" rel="tag">${tag.name!}</a>
</#list>
</#if>
</div>
<#include "../layouts/sharelike.ftl">
</footer><!-- .entry-footer -->
</article><!-- #post-## -->

45
tpl/content-thumb.ftl Normal file
View File

@ -0,0 +1,45 @@
<#--
@package Akina
-->
<#list posts.content as post>
<article class="post post-list-thumb <#if (post_index+1) % 2==0>post-list-thumb-left</#if>" itemscope="" itemtype="http://schema.org/BlogPosting">
<div class="post-thumb">
<#if post.thumbnail?? && post.thumbnail!=''>
<a href="${post.fullPath!}" style="background-image: url(${post.thumbnail!});"></a>
<#else>
<a href="${post.fullPath!}" style="background-image: url(${theme_base!}/images/temp.jpg);"></a>
</#if>
</div><!-- thumbnail-->
<div class="post-content-wrap">
<div class="post-content">
<div class="post-date">
<i class="iconfont">&#xe65f;</i>${post.createTime?string("yyyy-MM-dd")}
<#if post.topPriority?? && post.topPriority!=0>
&nbsp;<i class="iconfont hotpost">&#xe758;</i>
</#if>
</div>
<a href="${post.fullPath!}" class="post-title"><h3>${post.title!}</h3></a>
<div class="post-meta">
<span>
<i class="iconfont">&#xe73d;</i>${post.visits?c} 热度
</span>
<span class="comments-number">
<i class="iconfont">&#xe731;</i>${post.commentCount!0} 条评论
</span>
<#if post.categories?? && post.categories?size gt 0>
<span>
<i class="iconfont">&#xe739;</i>
<a href="${post.categories[0].fullPath!}">${post.categories[0].name!}</a>
</span>
</#if>
</div>
<div class="float-content">
<p>${post.summary!}</p>
<div class="post-bottom">
<a href="${post.fullPath!}" class="button-normal"><i class="iconfont">&#xe6a0;</i></a>
</div>
</div>
</div>
</div>
</article>
</#list>

42
tpl/content.ftl Normal file
View File

@ -0,0 +1,42 @@
<#--
@package Akina
-->
<article class="post post-list" itemscope="" itemtype="http://schema.org/BlogPosting">
<div class="post-entry">
<div class="feature">
<#if post.thumbnail?? && post.thumbnail!=''>
<a href="${post.fullPath!}">
<div class="overlay"><i class="iconfont">&#xe791;</i></div>
<img width="150" height="150" src="${post.thumbnail!}" class="attachment-post-thumbnail size-post-thumbnail wp-post-image" alt="" />
</a>
<#else>
<a href="${post.fullPath!}">
<div class="overlay"><i class="iconfont">&#xe791;</i></div>
<img src="${theme_base!}/images/random/d-${randomMethod(1,10)}.jpg"/>
</a>
</#if>
</div>
<h1 class="entry-title"><a href="${post.fullPath!}">${post.title!}</a></h1>
<div class="p-time">
<#if post.topPriority?? && post.topPriority!=0>
<i class="iconfont hotpost">&#xe758;</i>
</#if>
<i class="iconfont">&#xe65f;</i>${post.createTime?string("yyyy-MM-dd")}
</div>
<p>${post.summary!}</p>
<footer class="entry-footer">
<div class="post-more">
<a href="${post.fullPath!}"><i class="iconfont">&#xe6a0;</i></a>
</div>
<div class="info-meta">
<div class="comnum">
<span><i class="iconfont">&#xe731;</i>${post.commentCount!0} 条评论</span>
</div>
<div class="views">
<span><i class="iconfont">&#xe73d;</i>${post.visits!0} 热度</span>
</div>
</div>
</footer><!-- .entry-footer -->
</div>
<hr>
</article><!-- #post-## -->