Merge pull request #216 from mashirozx/dev

update to v3.3.8
pull/232/head v3.3.8
Mashiro 2020-04-12 22:00:43 +08:00 committed by GitHub
commit 7a1ec65a9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 3084 additions and 741 deletions

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@ function get_gravatar(email, size) {
var size = size || 80; var size = size || 80;
return 'https://gravatar.2heng.xin/avatar/' + MD5(email) + '.jpg?s=' + size + '&d=mm'; return 'https://' + Poi.gravatar_url + '/' + MD5(email) + '.jpg?s=' + size + '&d=mm';
} }
// sync css // sync css

View File

@ -150,6 +150,7 @@ h1.entry-title {
} }
.entry-content tr:nth-child(even){background-color: #f2f2f2} .entry-content tr:nth-child(even){background-color: #f2f2f2}
body.dark .entry-content tr:nth-child(even){background-color: unset}
.entry-content th { .entry-content th {
color: white; color: white;

View File

@ -88,7 +88,7 @@
'comment_notes_after' => '', 'comment_notes_after' => '',
'comment_notes_before' => '', 'comment_notes_before' => '',
'fields' => apply_filters( 'comment_form_default_fields', array( 'fields' => apply_filters( 'comment_form_default_fields', array(
'avatar' => '<div class="cmt-info-container"><div class="comment-user-avatar"><img src="https://gravatar.2heng.xin/avatar/f11f237b3de93c93b24045e71f7f65c6?s=80&d=mm&r=g"><div class="socila-check qq-check"><i class="fa fa-qq" aria-hidden="true"></i></div><div class="socila-check gravatar-check"><i class="fa fa-google" aria-hidden="true"></i></div></div>', 'avatar' => '<div class="cmt-info-container"><div class="comment-user-avatar"><img src="' . get_template_directory_uri() . '/images/avatar.jpeg"><div class="socila-check qq-check"><i class="fa fa-qq" aria-hidden="true"></i></div><div class="socila-check gravatar-check"><i class="fa fa-google" aria-hidden="true"></i></div></div>',
'author' => 'author' =>
'<div class="popup cmt-popup cmt-author" onclick="cmt_showPopup(this)"><span class="popuptext" id="thePopup" style="margin-left: -115px;width: 230px;">' . __("Auto pull nickname and avatar with a QQ num. entered", "sakura")/*输入QQ号将自动拉取昵称和头像*/ . '</span><input type="text" placeholder="' . __("Nickname or QQ number", "sakura") /*昵称或QQ号*/. ' ' . ( $req ? '(' . __("Name* ", "sakura") . ')' : '') . '" name="author" id="author" value="' . esc_attr($comment_author) . '" size="22" autocomplete="off" tabindex="1" ' . ($req ? "aria-required='true'" : '' ). ' /></div>', '<div class="popup cmt-popup cmt-author" onclick="cmt_showPopup(this)"><span class="popuptext" id="thePopup" style="margin-left: -115px;width: 230px;">' . __("Auto pull nickname and avatar with a QQ num. entered", "sakura")/*输入QQ号将自动拉取昵称和头像*/ . '</span><input type="text" placeholder="' . __("Nickname or QQ number", "sakura") /*昵称或QQ号*/. ' ' . ( $req ? '(' . __("Name* ", "sakura") . ')' : '') . '" name="author" id="author" value="' . esc_attr($comment_author) . '" size="22" autocomplete="off" tabindex="1" ' . ($req ? "aria-required='true'" : '' ). ' /></div>',
'email' => 'email' =>

View File

@ -65,7 +65,8 @@
<?php wp_nav_menu( array( 'depth' => 2, 'theme_location' => 'primary', 'container' => false ) ); ?> <?php wp_nav_menu( array( 'depth' => 2, 'theme_location' => 'primary', 'container' => false ) ); ?>
</div><!-- m-nav-center end --> </div><!-- m-nav-center end -->
<a class="cd-top faa-float animated "></a> <a class="cd-top faa-float animated "></a>
<button onclick="topFunction()" id="moblieGoTop" title="Go to top"><i class="fa fa-chevron-up" aria-hidden="true"></i></button> <button id="moblieGoTop" title="Go to top"><i class="fa fa-chevron-up" aria-hidden="true"></i></button>
<button id="moblieDarkLight"><i class="fa fa-moon-o" aria-hidden="true"></i></button>
<!-- search start --> <!-- search start -->
<form class="js-search search-form search-form--modal" method="get" action="<?php echo home_url(); ?>" role="search"> <form class="js-search search-form search-form--modal" method="get" action="<?php echo home_url(); ?>" role="search">
<div class="search-form__inner"> <div class="search-form__inner">
@ -148,11 +149,11 @@
<div class="show-hide-wrap"><button class="show-hide"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z"></path></svg></button></div> <div class="show-hide-wrap"><button class="show-hide"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 32 32"><path d="M22 16l-10.105-10.6-1.895 1.987 8.211 8.613-8.211 8.612 1.895 1.988 8.211-8.613z"></path></svg></button></div>
</aside> </aside>
<?php endif; ?> <?php endif; ?>
<?php if (akina_option('playlist_id', '')): ?> <?php if (akina_option('aplayer_server') != 'off'): ?>
<div id="aplayer-float" style="z-index: 100;" <div id="aplayer-float" style="z-index: 100;"
class="aplayer" class="aplayer"
data-id="<?php echo akina_option('playlist_id', ''); ?>" data-id="<?php echo akina_option('aplayer_playlistid', ''); ?>"
data-server="netease" data-server="<?php echo akina_option('aplayer_server'); ?>"
data-type="playlist" data-type="playlist"
data-fixed="true" data-fixed="true"
data-theme="orange"> data-theme="orange">

View File

@ -204,6 +204,7 @@ function sakura_scripts()
// } // }
//拦截移动端 //拦截移动端
version_compare($GLOBALS['wp_version'], '5.1', '>=') ? $reply_link_version = 'new' : $reply_link_version = 'old'; version_compare($GLOBALS['wp_version'], '5.1', '>=') ? $reply_link_version = 'new' : $reply_link_version = 'old';
$gravatar_url = akina_option('gravatar_proxy') ?: 'secure.gravatar.com/avatar';
wp_localize_script('app', 'Poi', array( wp_localize_script('app', 'Poi', array(
'pjax' => akina_option('poi_pjax'), 'pjax' => akina_option('poi_pjax'),
'movies' => $movies, 'movies' => $movies,
@ -215,7 +216,8 @@ function sakura_scripts()
'reply_link_version' => $reply_link_version, 'reply_link_version' => $reply_link_version,
'api' => esc_url_raw(rest_url()), 'api' => esc_url_raw(rest_url()),
'nonce' => wp_create_nonce('wp_rest'), 'nonce' => wp_create_nonce('wp_rest'),
'google_analytics_id' => akina_option('google_analytics_id', '') 'google_analytics_id' => akina_option('google_analytics_id', ''),
'gravatar_url' => $gravatar_url
)); ));
} }
add_action('wp_enqueue_scripts', 'sakura_scripts'); add_action('wp_enqueue_scripts', 'sakura_scripts');
@ -608,13 +610,15 @@ function get_link_items()
* Gravatar头像使用中国服务器 * Gravatar头像使用中国服务器
*/ */
function gravatar_cn($url) function gravatar_cn($url)
{ {
$gravatar_url = array('0.gravatar.com', '1.gravatar.com', '2.gravatar.com', 'secure.gravatar.com'); $gravatar_url = array('0.gravatar.com/avatar','1.gravatar.com/avatar','2.gravatar.com/avatar','secure.gravatar.com/avatar');
//return str_replace($gravatar_url, 'cn.gravatar.com', $url); //return str_replace($gravatar_url, 'cn.gravatar.com', $url);
//官方服务器近期大陆访问 429建议使用镜像 //官方服务器近期大陆访问 429建议使用镜像
return str_replace( $gravatar_url, 'gravatar.2heng.xin', $url ); return str_replace( $gravatar_url, akina_option('gravatar_proxy'), $url );
}
if(akina_option('gravatar_proxy')){
add_filter('get_avatar_url', 'gravatar_cn', 4);
} }
add_filter('get_avatar_url', 'gravatar_cn', 4);
/* /*
* 自定义默认头像 * 自定义默认头像
@ -662,6 +666,7 @@ function akina_body_classes($classes)
/*if(!wp_is_mobile()) { /*if(!wp_is_mobile()) {
$classes[] = 'serif'; $classes[] = 'serif';
}*/ }*/
$classes[] = $_COOKIE['dark'.akina_option('cookie_version', '')] == '1' ? 'dark' : ' ';
return $classes; return $classes;
} }
add_filter('body_class', 'akina_body_classes'); add_filter('body_class', 'akina_body_classes');
@ -1758,11 +1763,13 @@ function DEFAULT_FEATURE_IMAGE()
} }
//防止设置置顶文章造成的图片同侧bug //防止设置置顶文章造成的图片同侧bug
add_action('pre_get_posts', function ($q) { add_action( 'pre_get_posts', function( $q ){
if ($q->is_home() && $q->is_main_query() && $q->get('paged') > 1) { if ( $q->is_home() && $q->is_main_query() ){
$q->set('post__not_in', get_option('sticky_posts')); $q->set( 'posts_per_page', 10 - sizeof(get_option( 'sticky_posts' )) );
if ( $q->get( 'paged' ) > 1 )
$q->set( 'post__not_in', get_option( 'sticky_posts' ) );
} }
}); });
//评论回复 //评论回复

View File

@ -62,6 +62,7 @@ if (akina_option('akina_meta') == true) {
<meta name="keywords" content="<?php echo $keywords; ?>" /> <meta name="keywords" content="<?php echo $keywords; ?>" />
<?php } ?> <?php } ?>
<link rel="shortcut icon" href="<?php echo akina_option('favicon_link', ''); ?>"/> <link rel="shortcut icon" href="<?php echo akina_option('favicon_link', ''); ?>"/>
<meta name="theme-color" content="#31363b">
<meta http-equiv="x-dns-prefetch-control" content="on"> <meta http-equiv="x-dns-prefetch-control" content="on">
<?php wp_head(); ?> <?php wp_head(); ?>
<script type="text/javascript"> <script type="text/javascript">

BIN
images/avatar.jpeg 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

454
inc/api.php 100644 → 100755
View File

@ -1,5 +1,18 @@
<?php <?php
/**
* Classes
*/
include_once('classes/Aplayer.php');
include_once('classes/Bilibili.php');
include_once('classes/Cache.php');
include_once('classes/Images.php');
include_once('classes/QQ.php');
use Sakura\API\Images;
use Sakura\API\QQ;
use Sakura\API\Cache;
/** /**
* Router * Router
*/ */
@ -32,63 +45,20 @@ add_action('rest_api_init', function () {
'methods' => 'GET', 'methods' => 'GET',
'callback' => 'get_qq_avatar', 'callback' => 'get_qq_avatar',
)); ));
register_rest_route('sakura/v1', '/bangumi/bilibili', array(
'methods' => 'POST',
'callback' => 'bgm_bilibili',
));
register_rest_route('sakura/v1', '/meting/aplayer', array(
'methods' => 'GET',
'callback' => 'meting_aplayer',
));
}); });
/**
* QQ info
* https://sakura.2heng.xin/wp-json/sakura/v1/qqinfo/json
*/
function get_qq_info(WP_REST_Request $request)
{
if (!check_ajax_referer('wp_rest', '_wpnonce', false)) {
$output = array(
'status' => 403,
'success' => false,
'message' => 'Unauthorized client.'
);
} elseif ($_GET['qq']) {
$qq = $_GET['qq'];
/**
* TODO: 设置host国外服务器默认解析的不是国内IP可能无法获取数据
* 182.254.92.32 r.qzone.qq.com
* 参考https://www.php.net/manual/zh/function.file-get-contents.php#108309
*/
$get_info = file_get_contents('http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?get_nick=1&uins=' . $qq);
$get_info = mb_convert_encoding($get_info, "UTF-8", "GBK");
$name = json_decode(substr($get_info, 17, -1), true);
if ($name) {
$output = array(
'status' => 200,
'success' => true,
'message' => 'success',
'avatar' => 'https://q.qlogo.cn/headimg_dl?dst_uin=' . $qq . '&spec=100',
'name' => $name[$qq][6],
);
} else {
$output = array(
'status' => 404,
'success' => false,
'message' => 'QQ number not exist.'
);
}
} else {
$output = array(
'status' => 400,
'success' => false,
'message' => 'Bad Request'
);
}
$result = new WP_REST_Response($output, $output['status']);
$result->set_headers(array('Content-Type' => 'application/json'));
return $result;
}
/** /**
* Image uploader response * Image uploader response
*/ */
function upload_image(WP_REST_Request $request) function upload_image(WP_REST_Request $request) {
{
// see: https://developer.wordpress.org/rest-api/requests/ // see: https://developer.wordpress.org/rest-api/requests/
// handle file params $file === $_FILES // handle file params $file === $_FILES
@ -110,19 +80,19 @@ function upload_image(WP_REST_Request $request)
$result->set_headers(array('Content-Type' => 'application/json')); $result->set_headers(array('Content-Type' => 'application/json'));
return $result; return $result;
} }
$images = new \Sakura\API\Images();
switch (akina_option("img_upload_api")) { switch (akina_option("img_upload_api")) {
case 'imgur': case 'imgur':
$image = file_get_contents($_FILES["cmt_img_file"]["tmp_name"]); $image = file_get_contents($_FILES["cmt_img_file"]["tmp_name"]);
$API_Request = Imgur_API($image); $API_Request = $images->Imgur_API($image);
break; break;
case 'smms': case 'smms':
$image = $_FILES; $image = $_FILES;
$API_Request = SMMS_API($image); $API_Request = $images->SMMS_API($image);
break; break;
case 'chevereto': case 'chevereto':
$image = file_get_contents($_FILES["cmt_img_file"]["tmp_name"]); $image = file_get_contents($_FILES["cmt_img_file"]["tmp_name"]);
$API_Request = Chevereto_API($image); $API_Request = $images->Chevereto_API($image);
break; break;
} }
@ -131,221 +101,13 @@ function upload_image(WP_REST_Request $request)
return $result; return $result;
} }
/**
* Chevereto upload interface
*/
function Chevereto_API($image)
{
$upload_url = akina_option('cheverto_url') . '/api/1/upload';
$args = array(
'body' => array(
'source' => base64_encode($image),
'key' => akina_option('chevereto_api_key'),
),
);
$response = wp_remote_post($upload_url, $args);
$reply = json_decode($response["body"]);
if ($reply->status_txt == 'OK' && $reply->status_code == 200) {
$status = 200;
$success = true;
$message = "success";
$link = $reply->image->image->url;
$proxy = akina_option('cmt_image_proxy') . $link;
} else {
$status = $reply->status_code;
$success = false;
$message = $reply->error->message;
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
$proxy = akina_option('cmt_image_proxy') . $link;
}
$output = array(
'status' => $status,
'success' => $success,
'message' => $message,
'link' => $link,
'proxy' => $proxy,
);
return $output;
}
/**
* Imgur upload interface
*/
function Imgur_API($image)
{
$client_id = akina_option('imgur_client_id');
$upload_url = akina_option('imgur_upload_image_proxy');
$args = array(
'headers' => array(
'Authorization' => 'Client-ID ' . $client_id,
),
'body' => array(
'image' => base64_encode($image),
),
);
$response = wp_remote_post($upload_url, $args);
$reply = json_decode($response["body"]);
if ($reply->success && $reply->status == 200) {
$status = 200;
$success = true;
$message = "success";
$link = $reply->data->link;
$proxy = akina_option('cmt_image_proxy') . $link;
} else {
$status = $reply->status;
$success = false;
$message = $reply->data->error;
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
$proxy = akina_option('cmt_image_proxy') . $link;
}
$output = array(
'status' => $status,
'success' => $success,
'message' => $message,
'link' => $link,
'proxy' => $proxy,
);
return $output;
}
/**
* smms upload interface
*/
function SMMS_API($image)
{
$client_id = akina_option('smms_client_id');
$upload_url = "https://sm.ms/api/v2/upload";
$filename = $image['cmt_img_file']['name'];
$filedata = $image['cmt_img_file']['tmp_name'];
$Boundary = wp_generate_password();
$bits = file_get_contents($filedata);
$args = array(
"headers" => "Content-Type: multipart/form-data; boundary=$Boundary\r\n\r\nAuthorization: Basic $client_id\r\n\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97",
"body" => "--$Boundary\r\nContent-Disposition: form-data; name=\"smfile\"; filename=\"$filename\"\r\n\r\n$bits\r\n\r\n--$Boundary--"
);
$response = wp_remote_post($upload_url, $args);
$reply = json_decode($response["body"]);
if ($reply->success && $reply->code == 'success') {
$status = 200;
$success = true;
$message = $reply->message;
$link = $reply->data->url;
$proxy = akina_option('cmt_image_proxy') . $link;
} else if (preg_match("/Image upload repeated limit/i", $reply->message, $matches)) {
$status = 200; // sm.ms 接口不规范,建议检测到重复的情况下返回标准化的 code并单独把 url 放进一个字段
$success = true;
$message = $reply->message;
$link = str_replace('Image upload repeated limit, this image exists at: ', '', $reply->message);
$proxy = akina_option('cmt_image_proxy') . $link;
} else {
$status = 400;
$success = false;
$message = $reply->message;
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
$proxy = akina_option('cmt_image_proxy') . $link;
}
$output = array(
'status' => $status,
'success' => $success,
'message' => $message,
'link' => $link,
'proxy' => $proxy,
);
return $output;
}
/*
* 定制实时搜索 rest api
* @rest api接口路径https://sakura.2heng.xin/wp-json/sakura/v1/cache_search/json
* @可在cache_search_json()函数末尾通过设置 HTTP header 控制 json 缓存时间
*/
function cache_search_json()
{
global $more;
$vowels = array("[", "{", "]", "}", "<", ">", "\r\n", "\r", "\n", "-", "'", '"', '`', " ", ":", ";", '\\', " ", "toc");
$regex = <<<EOS
/<\/?[a-zA-Z]+("[^"]*"|'[^']*'|[^'">])*>|begin[\S\s]*\/begin|hermit[\S\s]*\/hermit|img[\S\s]*\/img|{{.*?}}|:.*?:/m
EOS;
$more = 1;
$posts = new WP_Query('posts_per_page=-1&post_status=publish&post_type=post');
while ($posts->have_posts()): $posts->the_post();
$output .= '{"type":"post","link":"' . get_permalink() . '","title":' . json_encode(get_the_title()) . ',"comments":"' . get_comments_number('0', '1', '%') . '","text":' . json_encode(str_replace($vowels, " ", preg_replace($regex, ' ', apply_filters( 'the_content', get_the_content())))) . '},';
endwhile;
wp_reset_postdata();
$pages = new WP_Query('posts_per_page=-1&post_status=publish&post_type=page');
while ($pages->have_posts()): $pages->the_post();
$output .= '{"type":"page","link":"' . get_permalink() . '","title":' . json_encode(get_the_title()) . ',"comments":"' . get_comments_number('0', '1', '%') . '","text":' . json_encode(str_replace($vowels, " ", preg_replace($regex, ' ', apply_filters( 'the_content', get_the_content())))) . '},';
endwhile;
wp_reset_postdata();
$tags = get_tags();
foreach ($tags as $tag) {
$output .= '{"type":"tag","link":"' . get_term_link($tag) . '","title":' . json_encode($tag->name) . ',"comments":"","text":""},';
}
$categories = get_categories();
foreach ($categories as $category) {
$output .= '{"type":"category","link":"' . get_term_link($category) . '","title":' . json_encode($category->name) . ',"comments":"","text":""},';
}
if (akina_option('live_search_comment')) {
$comments = get_comments();
foreach ($comments as $comment) {
$is_private = get_comment_meta($comment->comment_ID, '_private', true);
if ($is_private) {
$output .= '{"type":"comment","link":"' . get_comment_link($comment) . '","title":' . json_encode(get_the_title($comment->comment_post_ID)) . ',"comments":"","text":' . json_encode($comment->comment_author . "" . __("The comment is private", "sakura") /*该评论为私密评论*/) . '},';
continue;
} else {
$output .= '{"type":"comment","link":"' . get_comment_link($comment) . '","title":' . json_encode(get_the_title($comment->comment_post_ID)) . ',"comments":"","text":' . json_encode(str_replace($vowels, " ", preg_replace($regex, " ", $comment->comment_author . "" . $comment->comment_content))) . '},';
}
}
}
$output = substr($output, 0, strlen($output) - 1);
$data = '[' . $output . ']';
$result = new WP_REST_Response(json_decode($data), 200);
$result->set_headers(
array(
'Content-Type' => 'application/json',
'Cache-Control' => 'max-age=3600', // json 缓存控制
)
);
return $result;
}
/* /*
* 随机封面图 rest api * 随机封面图 rest api
* @rest api接口路径https://sakura.2heng.xin/wp-json/sakura/v1/image/cover * @rest api接口路径https://sakura.2heng.xin/wp-json/sakura/v1/image/cover
*/ */
function cover_gallery() { function cover_gallery() {
if(akina_option('cover_cdn_options')=="type_2"){ $imgurl = Images::cover_gallery();
$img_array = glob(get_template_directory() . "/manifest/gallary/*.{gif,jpg,png}",GLOB_BRACE);
$img = array_rand($img_array);
$imgurl = trim($img_array[$img]);
$imgurl = str_replace(get_template_directory(), get_template_directory_uri(), $imgurl);
}elseif(akina_option('cover_cdn_options')=="type_3"){
$imgurl = akina_option('cover_cdn');
}else{
global $sakura_image_array;
$img_array = json_decode($sakura_image_array, true);
$img = array_rand($img_array);
$img_domain = akina_option('cover_cdn') ? akina_option('cover_cdn') : get_template_directory_uri();
if(strpos($_SERVER['HTTP_ACCEPT'], 'image/webp')) {
$imgurl = $img_domain . "/manifest/" . $img_array[$img]["webp"][0];
} else {
$imgurl = $img_domain . "/manifest/" . $img_array[$img]["jpeg"][0];
}
}
$data = array('cover image'); $data = array('cover image');
$response = new WP_REST_Response($data); $response = new WP_REST_Response($data);
$response->set_status(302); $response->set_status(302);
@ -366,59 +128,135 @@ function feature_gallery() {
* @rest api接口路径https://sakura.2heng.xin/wp-json/sakura/v1/database/update * @rest api接口路径https://sakura.2heng.xin/wp-json/sakura/v1/database/update
*/ */
function update_database() { function update_database() {
if(akina_option('cover_cdn_options')=="type_1"){ if (akina_option('cover_cdn_options') == "type_1") {
global $wpdb; $output = Cache::update_database();
$sakura_table_name = $wpdb->base_prefix.'sakura';
$img_domain = akina_option('cover_cdn') ? akina_option('cover_cdn') : get_template_directory();
$manifest = file_get_contents($img_domain . "/manifest/manifest.json");
if($manifest) {
$manifest = array(
"mate_key" => "manifest_json",
"mate_value" => $manifest
);
$time = array(
"mate_key" => "json_time",
"mate_value" => date("Y-m-d H:i:s",time())
);
$wpdb->query("DELETE FROM $sakura_table_name WHERE `mate_key` ='manifest_json'");
$wpdb->query("DELETE FROM $sakura_table_name WHERE `mate_key` ='json_time'");
$wpdb->insert($sakura_table_name,$manifest);
$wpdb->insert($sakura_table_name,$time);
$output = "manifest.json has been stored into database.";
}else{
$output = "manifest.json not found, please ensure your url ($img_domain) is corrent.";
}
$result = new WP_REST_Response($output, 200); $result = new WP_REST_Response($output, 200);
return $result; return $result;
}else{ } else {
return new WP_REST_Response("Invalid access", 200); return new WP_REST_Response("Invalid access", 200);
} }
} }
/*
* 定制实时搜索 rest api
* @rest api接口路径https://sakura.2heng.xin/wp-json/sakura/v1/cache_search/json
* @可在cache_search_json()函数末尾通过设置 HTTP header 控制 json 缓存时间
*/
function cache_search_json() {
if (!check_ajax_referer('wp_rest', '_wpnonce', false)) {
$output = array(
'status' => 403,
'success' => false,
'message' => 'Unauthorized client.'
);
$result = new WP_REST_Response($output, 403);
} else {
$output = Cache::search_json();
$result = new WP_REST_Response($output, 200);
}
$result->set_headers(
array(
'Content-Type' => 'application/json',
'Cache-Control' => 'max-age=3600', // json 缓存控制
)
);
return $result;
}
/**
* QQ info
* https://sakura.2heng.xin/wp-json/sakura/v1/qqinfo/json
*/
function get_qq_info(WP_REST_Request $request) {
if (!check_ajax_referer('wp_rest', '_wpnonce', false)) {
$output = array(
'status' => 403,
'success' => false,
'message' => 'Unauthorized client.'
);
} elseif ($_GET['qq']) {
$qq = $_GET['qq'];
$output = QQ::get_qq_info($qq);
} else {
$output = array(
'status' => 400,
'success' => false,
'message' => 'Bad Request'
);
}
$result = new WP_REST_Response($output, $output['status']);
$result->set_headers(array('Content-Type' => 'application/json'));
return $result;
}
/** /**
* QQ头像链接解密 * QQ头像链接解密
* https://sakura.2heng.xin/wp-json/sakura/v1/qqinfo/avatar * https://sakura.2heng.xin/wp-json/sakura/v1/qqinfo/avatar
*/ */
function get_qq_avatar(){ function get_qq_avatar() {
global $sakura_privkey; $encrypted = $_GET["qq"];
$encrypted=$_GET["qq"]; $imgurl = QQ::get_qq_avatar($encrypted);
if(isset($encrypted)){ if (akina_option('qq_avatar_link') == 'type_2') {
$iv = str_repeat($sakura_privkey, 2); $imgdata = file_get_contents($imgurl);
$encrypted = base64_decode(urldecode($encrypted)); $response = new WP_REST_Response();
$qq_number = openssl_decrypt($encrypted, 'aes-128-cbc', $sakura_privkey, 0, $iv); $response->set_headers(array(
preg_match('/^\d{3,}$/', $qq_number, $matches); 'Content-Type' => 'image/jpeg',
$imgurl='https://q2.qlogo.cn/headimg_dl?dst_uin='.$matches[0].'&spec=100'; 'Cache-Control' => 'max-age=86400'
if(akina_option('qq_avatar_link')=='type_2'){ ));
$imgdata = file_get_contents($imgurl); echo $imgdata;
header("Content-type: image/jpeg"); } else {
header("Cache-Control: max-age=86400"); $response = new WP_REST_Response();
echo $imgdata; $response->set_status(301);
}else{ $response->header('Location', $imgurl);
}
return $response;
}
function bgm_bilibili() {
if (!check_ajax_referer('wp_rest', '_wpnonce', false)) {
$output = array(
'status' => 403,
'success' => false,
'message' => 'Unauthorized client.'
);
$response = new WP_REST_Response($output, 403);
} else {
$page = $_GET["page"] ?: 2;
$bgm = new \Sakura\API\Bilibili();
$html = preg_replace("/\s+|\n+|\r/", ' ', $bgm->get_bgm_items($page));
$response = new WP_REST_Response($html, 200);
}
return $response;
}
function meting_aplayer() {
$type = $_GET['type'];
$id = $_GET['id'];
$wpnonce = $_GET['_wpnonce'];
$meting_pnonce = $_GET['meting_pnonce'];
if ((isset($wpnonce) && !check_ajax_referer('wp_rest', $wpnonce, false)) || (isset($nonce) && !wp_verify_nonce($nonce, $type . '#:' . $id))) {
$output = array(
'status' => 403,
'success' => false,
'message' => 'Unauthorized client.'
);
$response = new WP_REST_Response($output, 403);
} else {
$Meting_API = new \Sakura\API\Aplayer();
$data = $Meting_API->get_data($type, $id);
if ($type === 'playlist') {
$response = new WP_REST_Response($data, 200);
$response->set_headers(array('cache-control' => 'max-age=3600'));
} elseif ($type === 'lyric') {
$response = new WP_REST_Response();
$response->set_headers(array('cache-control' => 'max-age=3600'));
echo $data;
} else {
$response = new WP_REST_Response(); $response = new WP_REST_Response();
$response->set_status(301); $response->set_status(301);
$response->header('Location', $imgurl); $response->header('Location', $data);
return $response;
} }
} }
} return $response;
}

View File

@ -0,0 +1,156 @@
<?php
namespace Sakura\API;
class Aplayer
{
public $server;
public $playlist_id;
private $cookies;
public $api_url;
public function __construct() {
$this->server = akina_option('aplayer_server');
$this->playlist_id = akina_option('aplayer_playlistid');
$this->cookies = akina_option('aplayer_cookie');
$this->api_url = rest_url('sakura/v1/meting/aplayer');
require('Meting.php');
}
public function get_data($type, $id) {
$server = $this->server;
$cookies = $this->cookies;
$playlist_id = $this->playlist_id;
$api = new \Sakura\API\Meting($server);
if (!empty($cookies) && $server === "netease") $api->cookie($cookies);
switch ($type) {
case 'song':
$data = $api->format(true)->song($id);
$data = json_decode($data, true)["url"];
$data = $this->song_url($data);
break;
// case 'album':
// $data = $api->format(true)->album($id);
// $data=json_decode($data, true)["url"];
// break;
case 'playlist':
$data = $api->format(true)->playlist($playlist_id);
$data = $this->format_playlist($data);
break;
case 'lyric':
$data = $api->format(true)->lyric($id);
$data = $this->format_lyric($data);
break;
case 'pic':
$data = $api->format(true)->pic($id);
$data = json_decode($data, true)["url"];
break;
// case 'search':
// $data = $api->format(true)->search($id);
// $data=json_decode($data, true);
// break;
default:
$data = $api->format(true)->url($id);
$data = json_decode($data, true)["url"];
$data = $this->song_url($data);
break;
}
return $data;
}
private function format_playlist($data) {
$server = $this->server;
$api_url = $this->api_url;
$data = json_decode($data);
$playlist = array();
foreach ((array)$data as $value) {
$name = $value->name;
$artists = implode(" / ", (array)$value->artist);
$mp3_url = "$api_url?server=$server&type=url&id=" . $value->url_id . '&meting_nonce=' . wp_create_nonce('url#:' . $value->url_id);
$cover = "$api_url?server=$server&type=pic&id=" . $value->pic_id . '&meting_nonce=' . wp_create_nonce('pic#:' . $value->url_id);
$lyric = "$api_url?server=$server&type=lyric&id=" . $value->lyric_id . '&meting_nonce=' . wp_create_nonce('lyric#:' . $value->url_id);
$playlist[] = array(
"name" => $name,
"artist" => $artists,
"url" => $mp3_url,
"cover" => $cover,
"lrc" => $lyric
);
}
return $playlist;
}
private function song_url($url){
$server = $this->server;
if ($server == 'netease') {
$url = str_replace('://m7c.', '://m7.', $url);
$url = str_replace('://m8c.', '://m8.', $url);
$url = str_replace('http://m8.', 'https://m9.', $url);
$url = str_replace('http://m7.', 'https://m9.', $url);
$url = str_replace('http://m10.', 'https://m10.', $url);
}elseif ($server == 'xiami') {
$url = str_replace('http://', 'https://', $url);
}elseif ($server == 'baidu') {
$url = str_replace('http://zhangmenshiting.qianqian.com', 'https://gss3.baidu.com/y0s1hSulBw92lNKgpU_Z2jR7b2w6buu', $url);
}else{
$url = $url;
}
return $url;
}
private function format_lyric($data) {
$server = $this->server;
$data = json_decode($data, true);
$data = $this->lrctran($data['lyric'], $data['tlyric']);
if (empty($data)) {
$data = "[00:00.000]此歌曲暂无歌词,请您欣赏";
}
if ($server === 'tencent') {
$data = html_entity_decode($data, ENT_QUOTES | ENT_HTML5);
}
return $data;
}
private function lrctran($lyric, $tlyric) {
$lyric = $this->lrctrim($lyric);
$tlyric = $this->lrctrim($tlyric);
$len1 = count($lyric);
$len2 = count($tlyric);
$result = "";
for ($i = 0, $j = 0; $i < $len1 && $j < $len2; $i++) {
while ($lyric[$i][0] > $tlyric[$j][0] && $j + 1 < $len2) {
$j++;
}
if ($lyric[$i][0] == $tlyric[$j][0]) {
$tlyric[$j][2] = str_replace('/', '', $tlyric[$j][2]);
if (!empty($tlyric[$j][2])) {
$lyric[$i][2] .= " ({$tlyric[$j][2]})";
}
$j++;
}
}
for ($i = 0; $i < $len1; $i++) {
$t = $lyric[$i][0];
$result .= sprintf("[%02d:%02d.%03d]%s\n", $t / 60000, $t % 60000 / 1000, $t % 1000, $lyric[$i][2]);
}
return $result;
}
private function lrctrim($lyrics) {
$lyrics = explode("\n", $lyrics);
$data = array();
foreach ($lyrics as $key => $lyric) {
preg_match('/\[(\d{2}):(\d{2}[\.:]?\d*)]/', $lyric, $lrcTimes);
$lrcText = preg_replace('/\[(\d{2}):(\d{2}[\.:]?\d*)]/', '', $lyric);
if (empty($lrcTimes)) {
continue;
}
$lrcTimes = intval($lrcTimes[1]) * 60000 + intval(floatval($lrcTimes[2]) * 1000);
$lrcText = preg_replace('/\s\s+/', ' ', $lrcText);
$lrcText = trim($lrcText);
$data[] = array($lrcTimes, $key, $lrcText);
}
sort($data);
return $data;
}
}

View File

@ -0,0 +1,68 @@
<?php
namespace Sakura\API;
class Bilibili
{
private $uid;
private $cookies;
public function __construct() {
$this->uid = akina_option('bilibili_id');
$this->cookies = akina_option('bilibili_cookie');
}
public function get_the_bgm_items($page = 1) {
$uid = $this->uid;
$cookies = $this->cookies;
$url = 'https://api.bilibili.com/x/space/bangumi/follow/list?type=1&pn=' . $page . '&ps=15&follow_status=0&vmid=' . $uid;
$args = array(
'headers' => array(
'Cookie' => $cookies,
'Host' => 'api.bilibili.com',
'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97'
)
);
$response = wp_remote_get($url, $args);
$bgmdata = json_decode($response["body"])->data;
return json_encode($bgmdata);
}
public function get_bgm_items($page = 1) {
$bgm = json_decode($this->get_the_bgm_items($page), true);
$totalpage = $bgm["total"] / 15;
if ($totalpage - $page < 0) {
$next = '<span>共追番' . $bgm["total"] . '部,继续加油吧!٩(ˊᗜˋ*)و</span>';
} else {
$next = '<a class="bangumi-next" href="' . rest_url('sakura/v1/bangumi/bilibili') . '?page=' . ++$page . '"><i class="fa fa-bolt" aria-hidden="true"></i> NEXT </a>';
}
$lists = $bgm["list"];
$html = "";
foreach ((array)$lists as $list) {
if (preg_match('/看完/m', $list["progress"], $matches_finish)) {
$percent = 100;
} else {
preg_match('/第(\d+)./m', $list['progress'], $matches_progress);
preg_match('/第(\d+)./m', $list["new_ep"]['index_show'], $matches_new);
$progress = is_numeric($matches_progress[1]) ? $matches_progress[1] : 0;
$total = is_numeric($matches_new[1]) ? $matches_new[1] : $list['total_count'];
$percent = $progress / $total * 100;
}
$html .= '<div class="column">
<a class="bangumi-item" href="https://bangumi.bilibili.com/anime/' . $list['season_id'] . '/" target="_blank" rel="nofollow">
<img class="bangumi-image" src="' . str_replace('http://', 'https://', $list['cover']) . '"/>
<div class="bangumi-info">
<h3 class="bangumi-title" title="' . $list['title'] . '">' . $list['title'] . '</h2>
<div class="bangumi-summary"> ' . $list['evaluate'] . ' </div>
<div class="bangumi-status">
<div class="bangumi-status-bar" style="width: ' . $percent . '%"></div>
<p>' . $list['new_ep']['index_show'] . '</p>
</div>
</div>
</a>
</div>';
}
$html .= '</div><br><div id="bangumi-pagination">' . $next . '</div>';
return $html;
}
}

View File

@ -0,0 +1,103 @@
<?php
namespace Sakura\API;
class Cache
{
public static function search_json() {
global $more;
$vowels = array("[", "{", "]", "}", "<", ">", "\r\n", "\r", "\n", "-", "'", '"', '`', " ", ":", ";", '\\', " ", "toc");
$regex = <<<EOS
/<\/?[a-zA-Z]+("[^"]*"|'[^']*'|[^'">])*>|begin[\S\s]*\/begin|hermit[\S\s]*\/hermit|img[\S\s]*\/img|{{.*?}}|:.*?:/m
EOS;
$more = 1;
$output = array();
$posts = new \WP_Query('posts_per_page=-1&post_status=publish&post_type=post');
while ($posts->have_posts()): $posts->the_post();
$output[] = array(
"type" => "post",
"link" => get_permalink(),
"title" => get_the_title(),
"comments" => get_comments_number('0', '1', '%'),
"text" => str_replace($vowels, " ", preg_replace($regex, ' ', apply_filters('the_content', get_the_content())))
);
endwhile;
wp_reset_postdata();
$pages = new \WP_Query('posts_per_page=-1&post_status=publish&post_type=page');
while ($pages->have_posts()): $pages->the_post();
$output[] = array(
"type" => "page",
"link" => get_permalink(),
"title" => get_the_title(),
"comments" => get_comments_number('0', '1', '%'),
"text" => str_replace($vowels, " ", preg_replace($regex, ' ', apply_filters('the_content', get_the_content())))
);
endwhile;
wp_reset_postdata();
$tags = get_tags();
foreach ($tags as $tag) {
$output[] = array(
"type" => "tag",
"link" => get_term_link($tag),
"title" => $tag->name,
"comments" => "",
"text" => ""
);
}
$categories = get_categories();
foreach ($categories as $category) {
$output[] = array(
"type" => "category",
"link" => get_term_link($category),
"title" => $category->name,
"comments" => "",
"text" => ""
);
}
if (akina_option('live_search_comment')) {
$comments = get_comments();
foreach ($comments as $comment) {
$is_private = get_comment_meta($comment->comment_ID, '_private', true);
$output[] = array(
"type" => "comment",
"link" => get_comment_link($comment),
"title" => get_the_title($comment->comment_post_ID),
"comments" => "",
"text" => $is_private ? ($comment->comment_author . ": " . __('The comment is private', 'sakura')) : str_replace($vowels, ' ', preg_replace($regex, ' ', $comment->comment_author . "" . $comment->comment_content))
);
}
}
return $output;
}
public static function update_database() {
global $wpdb;
$sakura_table_name = $wpdb->base_prefix . 'sakura';
$img_domain = akina_option('cover_cdn') ? akina_option('cover_cdn') : get_template_directory();
$manifest = file_get_contents($img_domain . "/manifest/manifest.json");
if ($manifest) {
$manifest = array(
"mate_key" => "manifest_json",
"mate_value" => $manifest
);
$time = array(
"mate_key" => "json_time",
"mate_value" => date("Y-m-d H:i:s", time())
);
$wpdb->query("DELETE FROM $sakura_table_name WHERE `mate_key` ='manifest_json'");
$wpdb->query("DELETE FROM $sakura_table_name WHERE `mate_key` ='json_time'");
$wpdb->insert($sakura_table_name, $manifest);
$wpdb->insert($sakura_table_name, $time);
$output = "manifest.json has been stored into database.";
} else {
$output = "manifest.json not found, please ensure your url ($img_domain) is corrent.";
}
return $output;
}
}

View File

@ -0,0 +1,165 @@
<?php
namespace Sakura\API;
class Images
{
private $chevereto_api_key;
private $imgur_client_id;
private $smms_client_id;
public function __construct() {
$this->chevereto_api_key = akina_option('chevereto_api_key');
$this->imgur_client_id = akina_option('imgur_client_id');
$this->smms_client_id = akina_option('smms_client_id');
}
/**
* Chevereto upload interface
*/
public function Chevereto_API($image) {
$upload_url = akina_option('cheverto_url') . '/api/1/upload';
$args = array(
'body' => array(
'source' => base64_encode($image),
'key' => $this->chevereto_api_key,
),
);
$response = wp_remote_post($upload_url, $args);
$reply = json_decode($response["body"]);
if ($reply->status_txt == 'OK' && $reply->status_code == 200) {
$status = 200;
$success = true;
$message = "success";
$link = $reply->image->image->url;
$proxy = akina_option('cmt_image_proxy') . $link;
} else {
$status = $reply->status_code;
$success = false;
$message = $reply->error->message;
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
$proxy = akina_option('cmt_image_proxy') . $link;
}
$output = array(
'status' => $status,
'success' => $success,
'message' => $message,
'link' => $link,
'proxy' => $proxy,
);
return $output;
}
/**
* Imgur upload interface
*/
public function Imgur_API($image) {
$upload_url = akina_option('imgur_upload_image_proxy');
$args = array(
'headers' => array(
'Authorization' => 'Client-ID ' . $this->imgur_client_id,
),
'body' => array(
'image' => base64_encode($image),
),
);
$response = wp_remote_post($upload_url, $args);
$reply = json_decode($response["body"]);
if ($reply->success && $reply->status == 200) {
$status = 200;
$success = true;
$message = "success";
$link = $reply->data->link;
$proxy = akina_option('cmt_image_proxy') . $link;
} else {
$status = $reply->status;
$success = false;
$message = $reply->data->error;
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
$proxy = akina_option('cmt_image_proxy') . $link;
}
$output = array(
'status' => $status,
'success' => $success,
'message' => $message,
'link' => $link,
'proxy' => $proxy,
);
return $output;
}
/**
* smms upload interface
*/
public function SMMS_API($image) {
$client_id = $this->smms_client_id;
$upload_url = "https://sm.ms/api/v2/upload";
$filename = $image['cmt_img_file']['name'];
$filedata = $image['cmt_img_file']['tmp_name'];
$Boundary = wp_generate_password();
$bits = file_get_contents($filedata);
$args = array(
"headers" => "Content-Type: multipart/form-data; boundary=$Boundary\r\n\r\nAuthorization: Basic $client_id\r\n\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97",
"body" => "--$Boundary\r\nContent-Disposition: form-data; name=\"smfile\"; filename=\"$filename\"\r\n\r\n$bits\r\n\r\n--$Boundary--"
);
$response = wp_remote_post($upload_url, $args);
$reply = json_decode($response["body"]);
if ($reply->success && $reply->code == 'success') {
$status = 200;
$success = true;
$message = $reply->message;
$link = $reply->data->url;
$proxy = akina_option('cmt_image_proxy') . $link;
} else if (preg_match("/Image upload repeated limit/i", $reply->message, $matches)) {
$status = 200; // sm.ms 接口不规范,建议检测到重复的情况下返回标准化的 code并单独把 url 放进一个字段
$success = true;
$message = $reply->message;
$link = str_replace('Image upload repeated limit, this image exists at: ', '', $reply->message);
$proxy = akina_option('cmt_image_proxy') . $link;
} else {
$status = 400;
$success = false;
$message = $reply->message;
$link = 'https://view.moezx.cc/images/2019/10/28/default_d_h_large.gif';
$proxy = akina_option('cmt_image_proxy') . $link;
}
$output = array(
'status' => $status,
'success' => $success,
'message' => $message,
'link' => $link,
'proxy' => $proxy,
);
return $output;
}
public static function cover_gallery() {
if (akina_option('cover_cdn_options') == "type_2") {
$img_array = glob(get_template_directory() . "/manifest/gallary/*.{gif,jpg,png}", GLOB_BRACE);
$img = array_rand($img_array);
$imgurl = trim($img_array[$img]);
$imgurl = str_replace(get_template_directory(), get_template_directory_uri(), $imgurl);
} elseif (akina_option('cover_cdn_options') == "type_3") {
$imgurl = akina_option('cover_cdn');
} else {
global $sakura_image_array;
$img_array = json_decode($sakura_image_array, true);
$img = array_rand($img_array);
$img_domain = akina_option('cover_cdn') ? akina_option('cover_cdn') : get_template_directory_uri();
if (strpos($_SERVER['HTTP_ACCEPT'], 'image/webp')) {
$imgurl = $img_domain . "/manifest/" . $img_array[$img]["webp"][0];
} else {
$imgurl = $img_domain . "/manifest/" . $img_array[$img]["jpeg"][0];
}
}
return $imgurl;
}
}

File diff suppressed because it is too large Load Diff

40
inc/classes/QQ.php 100644
View File

@ -0,0 +1,40 @@
<?php
namespace Sakura\API;
class QQ
{
public static function get_qq_info($qq) {
$get_info = file_get_contents('http://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?get_nick=1&uins=' . $qq);
$get_info = mb_convert_encoding($get_info, "UTF-8", "GBK");
$name = json_decode(substr($get_info, 17, -1), true);
if ($name) {
$output = array(
'status' => 200,
'success' => true,
'message' => 'success',
'avatar' => 'https://q.qlogo.cn/headimg_dl?dst_uin=' . $qq . '&spec=100',
'name' => $name[$qq][6],
);
} else {
$output = array(
'status' => 404,
'success' => false,
'message' => 'QQ number not exist.'
);
}
return $output;
}
public static function get_qq_avatar($encrypted) {
global $sakura_privkey;
if (isset($encrypted)) {
$iv = str_repeat($sakura_privkey, 2);
$encrypted = base64_decode(urldecode($encrypted));
$qq_number = openssl_decrypt($encrypted, 'aes-128-cbc', $sakura_privkey, 0, $iv);
preg_match('/^\d{3,}$/', $qq_number, $matches);
$imgurl = 'https://q2.qlogo.cn/headimg_dl?dst_uin=' . $matches[0] . '&spec=100';
return $imgurl;
}
}
}

File diff suppressed because one or more lines are too long

View File

@ -67,8 +67,9 @@ mashiro_option.jsdelivr_css_src = "<?php echo get_template_directory_uri() ?>/cd
<?php } else { ?> <?php } else { ?>
mashiro_option.jsdelivr_css_src = "https://cdn.jsdelivr.net/gh/mashirozx/Sakura@<?php echo SAKURA_VERSION; ?>/cdn/css/lib.min.css"; mashiro_option.jsdelivr_css_src = "https://cdn.jsdelivr.net/gh/mashirozx/Sakura@<?php echo SAKURA_VERSION; ?>/cdn/css/lib.min.css";
<?php } ?> <?php } ?>
<?php if (akina_option('playlist_id', '')): ?> <?php if (akina_option('aplayer_server') != 'off'): ?>
mashiro_option.float_player_on = true; mashiro_option.float_player_on = true;
mashiro_option.meting_api_url = "<?php echo rest_url('sakura/v1/meting/aplayer'); ?>";
<?php endif; ?> <?php endif; ?>
mashiro_option.cover_api = "<?php echo rest_url('sakura/v1/image/cover'); ?>"; mashiro_option.cover_api = "<?php echo rest_url('sakura/v1/image/cover'); ?>";

View File

@ -17,6 +17,7 @@ mashiro_global.ini = new function () {
coverVideoIni(); coverVideoIni();
checkskinSecter(); checkskinSecter();
scrollBar(); scrollBar();
load_bangumi();
} }
this.pjax = function () { // pjax reload functions (pjax 重载函数) this.pjax = function () { // pjax reload functions (pjax 重载函数)
pjaxInit(); pjaxInit();
@ -25,6 +26,7 @@ mashiro_global.ini = new function () {
copy_code_block(); copy_code_block();
coverVideoIni(); coverVideoIni();
checkskinSecter(); checkskinSecter();
load_bangumi();
} }
} }
@ -77,14 +79,21 @@ function post_list_show_animation() {
function callback(entries) { function callback(entries) {
entries.forEach((article) => { entries.forEach((article) => {
if (article.target.classList.contains("post-list-show")) { if (!window.IntersectionObserver) {
article.target.style.willChange = 'auto'; article.target.style.willChange = 'auto';
io.unobserve(article.target) if( article.target.classList.contains("post-list-show") === false){
} else {
if (article.isIntersecting) {
article.target.classList.add("post-list-show"); article.target.classList.add("post-list-show");
}
} else {
if (article.target.classList.contains("post-list-show")) {
article.target.style.willChange = 'auto'; article.target.style.willChange = 'auto';
io.unobserve(article.target) io.unobserve(article.target)
} else {
if (article.isIntersecting) {
article.target.classList.add("post-list-show");
article.target.style.willChange = 'auto';
io.unobserve(article.target)
}
} }
} }
}) })
@ -320,10 +329,51 @@ function checkBgImgCookie() {
$("#" + bgurl).click(); $("#" + bgurl).click();
} }
} }
if (document.body.clientWidth > 860) {
setTimeout(function () { function checkDarkModeCookie() {
checkBgImgCookie(); var dark = getCookie("dark"),
}, 100); today = new Date(),
hour = today.getHours();
if ((!dark && (hour > 21 || hour < 7) ) || (dark == '1' && (hour >= 22 || hour <= 6))) {
setTimeout(function () {
$("#dark-bg").click();
}, 100);
$("#moblieDarkLight").html('<i class="fa fa-sun-o" aria-hidden="true"></i>');
console.log('夜间模式开启');
} else {
if (document.body.clientWidth > 860) {
setTimeout(function () {
checkBgImgCookie();
}, 100);
} else {
$("html").css("background", "unset");
$("body").removeClass("dark");
$("#moblieDarkLight").html('<i class="fa fa-moon-o" aria-hidden="true"></i>');
setCookie("dark", "0", 0.33);
}
console.log('夜间模式关闭');
}
}
if (!getCookie("darkcache") && (new Date().getHours() > 21 || new Date().getHours() < 7)) {
removeCookie("dark");
setCookie("darkcache", "cached", 0.4);
}
setTimeout(function() {
checkDarkModeCookie();
}, 100);
function mobile_dark_light() {
if ($("body").hasClass("dark")) {
$("html").css("background", "unset");
$("body").removeClass("dark");
$("#moblieDarkLight").html('<i class="fa fa-moon-o" aria-hidden="true"></i>');
setCookie("dark", "0", 0.33);
} else {
$("html").css("background", "#31363b");
$("#moblieDarkLight").html('<i class="fa fa-sun-o" aria-hidden="true"></i>');
$("body").addClass("dark");
setCookie("dark", "1", 0.33);
}
} }
function no_right_click() { function no_right_click() {
@ -336,13 +386,12 @@ $(document).ready(function () {
function checkskin_bg(a) { function checkskin_bg(a) {
return a == "none" ? "" : a return a == "none" ? "" : a
} }
function changeBG() { function changeBG() {
var cached = $(".menu-list"); var cached = $(".menu-list");
cached.find("li").each(function () { cached.find("li").each(function () {
var tagid = this.id; var tagid = this.id;
cached.on("click", "#" + tagid, function () { cached.on("click", "#" + tagid, function () {
if (tagid == "white-bg") { if (tagid == "white-bg" || tagid == "dark-bg") {
mashiro_global.variables.skinSecter = true; mashiro_global.variables.skinSecter = true;
checkskinSecter(); checkskinSecter();
} else { } else {
@ -350,36 +399,50 @@ $(document).ready(function () {
checkskinSecter(); checkskinSecter();
} }
if (tagid == "dark-bg") { if (tagid == "dark-bg") {
$("#night-mode-cover").css("visibility", "visible"); $("html").css("background", "#31363b");
} else $(".site-content").css("background-color", "#fff");
$("#night-mode-cover").css("visibility", "hidden"); $("body").addClass("dark");
setCookie("dark", "1", 0.33);
} else{
$("html").css("background", "unset");
$("body").removeClass("dark");
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
setCookie("dark", "0", 0.33);
setCookie("bgImgSetting", tagid, 30);
}
switch (tagid) { switch (tagid) {
case "white-bg": case "white-bg":
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg0) + ")"); $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg0) + ")");
$(".site-content").css("background-color", "#fff");
break; break;
case "sakura-bg": case "sakura-bg":
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg1) + ")"); $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg1) + ")");
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
break; break;
case "gribs-bg": case "gribs-bg":
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg2) + ")"); $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg2) + ")");
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
break; break;
case "pixiv-bg": case "pixiv-bg":
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg3) + ")"); $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg3) + ")");
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
break; break;
case "KAdots-bg": case "KAdots-bg":
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg4) + ")"); $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg4) + ")");
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
break; break;
case "totem-bg": case "totem-bg":
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg5) + ")"); $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg5) + ")");
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
break; break;
case "bing-bg": case "bing-bg":
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg6) + ")"); $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg6) + ")");
$(".site-content").css("background-color", "rgba(255, 255, 255, .8)");
break; break;
case "dark-bg": // case "dark-bg":
$("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg7) + ")"); // $("body").css("background-image", "url(" + checkskin_bg(mashiro_option.skin_bg7) + ")");
break; // break;
} }
setCookie("bgImgSetting", tagid, 30);
closeSkinMenu(); closeSkinMenu();
}); });
}); });
@ -421,14 +484,9 @@ $(document).ready(function () {
}); });
function topFunction() { function topFunction() {
if ('scrollBehavior' in document.documentElement.style) { $('body,html').animate({
window.scrollTo({ scrollTop: 0
top: 0, })
behavior: "smooth"
})
} else {
window.scrollSmoothTo(0)
}
} }
function timeSeriesReload(flag) { function timeSeriesReload(flag) {
@ -817,7 +875,7 @@ if (mashiro_option.float_player_on) {
} }
}); });
} }
var b = 'https://api.i-meto.com/meting/api?server=:server&type=:type&id=:id&r=:r'; var b = mashiro_option.meting_api_url + '?server=:server&type=:type&id=:id&_wpnonce=' + Poi.nonce;
'undefined' != typeof meting_api && (b = meting_api); 'undefined' != typeof meting_api && (b = meting_api);
for (var f = 0; f < aplayers.length; f++) try { for (var f = 0; f < aplayers.length; f++) try {
aplayers[f].destroy() aplayers[f].destroy()
@ -830,7 +888,7 @@ if (mashiro_option.float_player_on) {
f = d.dataset.id; f = d.dataset.id;
if (f) { if (f) {
var g = d.dataset.api || b; var g = d.dataset.api || b;
g = g.replace(':server', d.dataset.server), g = g.replace(':type', d.dataset.type), g = g.replace(':id', d.dataset.id), g = g.replace(':auth', d.dataset.auth), g = g.replace(':r', Math.random()); g = g.replace(':server', d.dataset.server), g = g.replace(':type', d.dataset.type), g = g.replace(':id', d.dataset.id);
var h = new XMLHttpRequest; var h = new XMLHttpRequest;
h.onreadystatechange = function () { h.onreadystatechange = function () {
if (4 === h.readyState && (200 <= h.status && 300 > h.status || 304 === h.status)) { if (4 === h.readyState && (200 <= h.status && 300 > h.status || 304 === h.status)) {
@ -929,27 +987,6 @@ function getqqinfo() {
} }
}); });
} }
// $.ajax({
// type: 'get',
// url: mashiro_option.qq_avatar_api_url + '?type=getqqavatar&qq=' + qq,
// dataType: 'jsonp',
// jsonp: 'callback',
// jsonpCallback: 'qqavatarCallBack',
// success: function (data) {
// $('div.comment-user-avatar img').attr('src', data[qq]);
// setCookie('user_avatar', data[qq], 30);
// },
// error: function () {
// cached.filter('#qq,#email,#url').val('');
// if (!cached.filter('#qq').val()) {
// $('.qq-check').css('display', 'none');
// $('.gravatar-check').css('display', 'block');
// setCookie('user_qq', '', 30);
// $('div.comment-user-avatar img').attr('src', get_gravatar(cached.filter('#email').val(), 80));
// setCookie('user_avatar', get_gravatar(cached.filter('#email').val(), 80), 30);
// }
// }
// });
}); });
if (getCookie('user_avatar') && getCookie('user_email') && getCookie('is_user_qq') == 'no' && !getCookie('user_qq_email')) { if (getCookie('user_avatar') && getCookie('user_email') && getCookie('is_user_qq') == 'no' && !getCookie('user_qq_email')) {
$('div.comment-user-avatar img').attr('src', getCookie('user_avatar')); $('div.comment-user-avatar img').attr('src', getCookie('user_avatar'));
@ -1011,6 +1048,27 @@ setTimeout(function () {
activate_widget(); activate_widget();
}, 100); }, 100);
function load_bangumi() {
if ($("section").hasClass("bangumi")) {
$('body').on('click', '#bangumi-pagination a', function () {
$("#bangumi-pagination a").addClass("loading").text("");
var xhr = new XMLHttpRequest();
xhr.open('POST', this.href + "&_wpnonce=" + Poi.nonce, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
var html = JSON.parse(xhr.responseText);
$("#bangumi-pagination").remove();
$(".row").append(html);
}else{
$("#bangumi-pagination a").removeClass("loading").html('<i class="fa fa-exclamation-triangle" aria-hidden="true"></i> ERROR ');
}
};
xhr.send();
return false;
});
}
}
mashiro_global.ini.normalize(); mashiro_global.ini.normalize();
loadCSS(mashiro_option.jsdelivr_css_src); loadCSS(mashiro_option.jsdelivr_css_src);
loadCSS(mashiro_option.entry_content_theme_src); loadCSS(mashiro_option.entry_content_theme_src);
@ -1394,7 +1452,7 @@ var home = location.href,
$('html').css('overflow-y', 'hidden'); $('html').css('overflow-y', 'hidden');
if (mashiro_option.live_search) { if (mashiro_option.live_search) {
var QueryStorage = []; var QueryStorage = [];
search_a(Poi.api + "sakura/v1/cache_search/json"); search_a(Poi.api + "sakura/v1/cache_search/json?_wpnonce=" + Poi.nonce);
var otxt = addComment.I("search-input"), var otxt = addComment.I("search-input"),
list = addComment.I("PostlistBox"), list = addComment.I("PostlistBox"),
@ -1594,7 +1652,7 @@ var home = location.href,
var tempScrollTop = $(window).scrollTop(); var tempScrollTop = $(window).scrollTop();
$(window).scrollTop(tempScrollTop); $(window).scrollTop(tempScrollTop);
$body.animate({ $body.animate({
scrollTop: tempScrollTop + 300 scrollTop: tempScrollTop + 100
}, 666) }, 666)
} else { } else {
$("#pagination").html("<span>很高兴你翻到这里,但是真的没有了...</span>"); $("#pagination").html("<span>很高兴你翻到这里,但是真的没有了...</span>");
@ -1763,14 +1821,17 @@ var home = location.href,
cheight = window.innerHeight, cheight = window.innerHeight,
pc_to_top = document.querySelector(".cd-top"), pc_to_top = document.querySelector(".cd-top"),
mb_to_top = document.querySelector("#moblieGoTop"), mb_to_top = document.querySelector("#moblieGoTop"),
mb_dark_light = document.querySelector("#moblieDarkLight"),
changeskin = document.querySelector(".changeSkin-gear"); changeskin = document.querySelector(".changeSkin-gear");
$(window).scroll(function() { $(window).scroll(function() {
if (cwidth <= 860) { if (cwidth <= 860) {
if ($(this).scrollTop() > 20) { if ($(this).scrollTop() > 20) {
mb_to_top.style.transform = "scale(1)"; mb_to_top.style.transform = "scale(1)";
mb_dark_light.style.transform = "scale(1)";
} else { } else {
mb_to_top.style.transform = "scale(0)"; mb_to_top.style.transform = "scale(0)";
mb_dark_light.style.transform = "scale(0)";
} }
} else { } else {
if ($(this).scrollTop() > 100) { if ($(this).scrollTop() > 100) {
@ -1796,6 +1857,12 @@ var home = location.href,
pc_to_top.onclick = function() { pc_to_top.onclick = function() {
topFunction(); topFunction();
} }
mb_to_top.onclick = function() {
topFunction();
}
mb_dark_light.onclick = function() {
mobile_dark_light();
}
} }
} }
$(function () { $(function () {

Binary file not shown.

View File

@ -1,8 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Sakura\n" "Project-Id-Version: Sakura\n"
"POT-Creation-Date: 2020-02-13 23:59+0800\n" "POT-Creation-Date: 2020-04-06 17:56+0800\n"
"PO-Revision-Date: 2020-02-13 23:59+0800\n" "PO-Revision-Date: 2020-04-06 17:56+0800\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: en_US\n" "Language: en_US\n"
@ -142,74 +142,74 @@ msgstr ""
msgid "Nav Menus" msgid "Nav Menus"
msgstr "" msgstr ""
#: functions.php:420 inc/theme_plus.php:186 layouts/authorprofile.php:11 #: functions.php:423 inc/theme_plus.php:186 layouts/authorprofile.php:11
#: options.php:121 #: options.php:121
msgid "Author" msgid "Author"
msgstr "" msgstr ""
#: functions.php:420 #: functions.php:423
msgid "Blogger" msgid "Blogger"
msgstr "" msgstr ""
#: functions.php:424 #: functions.php:427
msgid "Location" msgid "Location"
msgstr "" msgstr ""
#: functions.php:428 #: functions.php:431
msgid "Private" msgid "Private"
msgstr "" msgstr ""
#: functions.php:430 #: functions.php:433
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: functions.php:432 #: functions.php:435
msgid "No" msgid "No"
msgstr "" msgstr ""
#: functions.php:435 #: functions.php:438
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: functions.php:524 #: functions.php:527
msgid "" msgid ""
"Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/" "Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/"
"\" target=\"_blank\">WP-Statistics</a>" "\" target=\"_blank\">WP-Statistics</a>"
msgstr "" msgstr ""
#: functions.php:574 #: functions.php:577
msgid "This guy is so lazy ╮(╯▽╰)╭" msgid "This guy is so lazy ╮(╯▽╰)╭"
msgstr "" msgstr ""
#: functions.php:1329 #: functions.php:1334
msgid "All expand/collapse" msgid "All expand/collapse"
msgstr "" msgstr ""
#: functions.php:1350 options.php:834 #: functions.php:1355 options.php:834
msgid " " msgid " "
msgstr "" msgstr ""
#: functions.php:1354 #: functions.php:1359
msgid " post(s)" msgid " post(s)"
msgstr "" msgstr ""
#: functions.php:1377 functions.php:1380 inc/theme_plus.php:478 #: functions.php:1382 functions.php:1385 inc/theme_plus.php:478
msgid "Dashboard" msgid "Dashboard"
msgstr "" msgstr ""
#: functions.php:1606 #: functions.php:1611
msgid "<b>ERROR</b>: This email domain (<b>@" msgid "<b>ERROR</b>: This email domain (<b>@"
msgstr "" msgstr ""
#: functions.php:1711 #: functions.php:1716
msgid "QQ" msgid "QQ"
msgstr "" msgstr ""
#: functions.php:1781 #: functions.php:1788
msgid "Sidebar" msgid "Sidebar"
msgstr "" msgstr ""
#: functions.php:1893 #: functions.php:1900
msgid "" msgid ""
"<b> For a better experience, please do not set <a href=\"/wp-admin/options-" "<b> For a better experience, please do not set <a href=\"/wp-admin/options-"
"permalink.php\"> permalink </a> as plain. To do this, you may need to " "permalink.php\"> permalink </a> as plain. To do this, you may need to "
@ -222,10 +222,6 @@ msgstr ""
msgid "page %s " msgid "page %s "
msgstr "" msgstr ""
#: inc/api.php:301 inc/theme_plus.php:727
msgid "The comment is private"
msgstr ""
#: inc/categories-images.php:45 inc/categories-images.php:66 #: inc/categories-images.php:45 inc/categories-images.php:66
msgid "category/tag image" msgid "category/tag image"
msgstr "" msgstr ""
@ -247,6 +243,10 @@ msgstr ""
msgid "no image" msgid "no image"
msgstr "" msgstr ""
#: inc/classes/Cache.php:70 inc/theme_plus.php:727
msgid "The comment is private"
msgstr ""
#: inc/options-framework.php:182 inc/options-framework.php:183 #: inc/options-framework.php:182 inc/options-framework.php:183
#: inc/options-framework.php:412 #: inc/options-framework.php:412
msgid "Sakura Options" msgid "Sakura Options"
@ -923,7 +923,7 @@ msgstr ""
msgid "Whether to turn on the top-feature" msgid "Whether to turn on the top-feature"
msgstr "" msgstr ""
#: options.php:446 options.php:1085 #: options.php:446 options.php:1126
msgid "Default on" msgid "Default on"
msgstr "" msgstr ""
@ -1380,167 +1380,239 @@ msgid "Footer float music player"
msgstr "" msgstr ""
#: options.php:926 #: options.php:926
msgid "" msgid "Choose which platform you'll use."
"If you don't need the player just leave it blank.Fill in the \"song list\" " msgstr ""
"ID of Netease Cloud Music, eg: https://music.163.com/#/playlist?"
"id=2288037900 The ID is 2288037900" #: options.php:931
msgid "Netease Cloud Music (default)"
msgstr "" msgstr ""
#: options.php:932 #: options.php:932
msgid "Version Control" msgid "Xiami Music"
msgstr "" msgstr ""
#: options.php:933 #: options.php:933
msgid "KuGou Music"
msgstr ""
#: options.php:934
msgid "Baidu Music"
msgstr ""
#: options.php:935
msgid "QQ Music (may fail) "
msgstr ""
#: options.php:936
msgid "Off"
msgstr ""
#: options.php:940
msgid "Song list ID"
msgstr ""
#: options.php:941
msgid ""
"Fill in the \"song list\" ID, eg: https://music.163.com/#/playlist?"
"id=2288037900 The ID is 2288037900"
msgstr ""
#: options.php:947
msgid "Netease Cloud Music cookie"
msgstr ""
#: options.php:948
msgid ""
"For Netease Cloud Music, fill in your vip account's cookies if you want to "
"play special tracks.<b>If you don't know what does mean, left it blank.</b>"
msgstr ""
#: options.php:954
msgid "Version Control"
msgstr ""
#: options.php:955
msgid "" msgid ""
"Used to update frontend cookies and browser caches, any string can be used" "Used to update frontend cookies and browser caches, any string can be used"
msgstr "" msgstr ""
#: options.php:939 #: options.php:961
msgid "Enable PJAX (recommand on)" msgid "Enable PJAX (recommand on)"
msgstr "" msgstr ""
#: options.php:940 #: options.php:962
msgid "The principle is the same as Ajax" msgid "The principle is the same as Ajax"
msgstr "" msgstr ""
#: options.php:946 #: options.php:968
msgid "Enable NProgress progress bar" msgid "Enable NProgress progress bar"
msgstr "" msgstr ""
#: options.php:947 options.php:954 options.php:961 #: options.php:969 options.php:976 options.php:983
msgid "Default off, check on" msgid "Default off, check on"
msgstr "" msgstr ""
#: options.php:953 #: options.php:975
msgid "Enable sidebar widget" msgid "Enable sidebar widget"
msgstr "" msgstr ""
#: options.php:960 #: options.php:982
msgid "Enable Announcement" msgid "Enable Announcement"
msgstr "" msgstr ""
#: options.php:967 #: options.php:989
msgid "Announcement content" msgid "Announcement content"
msgstr "" msgstr ""
#: options.php:968 #: options.php:990
msgid "" msgid ""
"Announcement content, the text exceeds 142 bytes will be scrolled display " "Announcement content, the text exceeds 142 bytes will be scrolled display "
"(mobile device is invalid)" "(mobile device is invalid)"
msgstr "" msgstr ""
#: options.php:974 #: options.php:995
msgid "Bilibili UID"
msgstr ""
#: options.php:996
msgid ""
"Fill in your UID, eg.https://space.bilibili.com/13972644/, only fill in with "
"the number part."
msgstr ""
#: options.php:1002
msgid "Bilibili Cookie"
msgstr ""
#: options.php:1003
msgid ""
"Fill in your Cookies, go to your bilibili homepage, you can get cookies in "
"brownser network pannel with pressing F12. If left this blank, you'll not "
"get the progress."
msgstr ""
#: options.php:1008
msgid "The categories of articles that don't not show on homepage" msgid "The categories of articles that don't not show on homepage"
msgstr "" msgstr ""
#: options.php:975 options.php:982 #: options.php:1009 options.php:1016
msgid "Fill in category ID, multiple IDs are divided by a comma \",\"" msgid "Fill in category ID, multiple IDs are divided by a comma \",\""
msgstr "" msgstr ""
#: options.php:981 #: options.php:1015
msgid "Images category" msgid "Images category"
msgstr "" msgstr ""
#: options.php:988 #: options.php:1022
msgid "Statistics Interface" msgid "Statistics Interface"
msgstr "" msgstr ""
#: options.php:993 #: options.php:1027
msgid "" msgid ""
"WP-Statistics plugin (Professional statistics, can exclude invalid access)" "WP-Statistics plugin (Professional statistics, can exclude invalid access)"
msgstr "" msgstr ""
#: options.php:994 #: options.php:1028
msgid "Theme built-in (simple statistics, calculate each page access request)" msgid "Theme built-in (simple statistics, calculate each page access request)"
msgstr "" msgstr ""
#: options.php:998 #: options.php:1032
msgid "Statistical data display format" msgid "Statistical data display format"
msgstr "" msgstr ""
#: options.php:1003 #: options.php:1037
msgid "23333 Views (default)" msgid "23333 Views (default)"
msgstr "" msgstr ""
#: options.php:1004 #: options.php:1038
msgid "23,333 Views (britain)" msgid "23,333 Views (britain)"
msgstr "" msgstr ""
#: options.php:1005 #: options.php:1039
msgid "23 333 Views (french)" msgid "23 333 Views (french)"
msgstr "" msgstr ""
#: options.php:1006 #: options.php:1040
msgid "23k Views (chinese)" msgid "23k Views (chinese)"
msgstr "" msgstr ""
#: options.php:1010 #: options.php:1044
msgid "Gravatar avatar proxy"
msgstr ""
#: options.php:1045
msgid ""
"A front-ed proxy for Gravatar, eg. gravatar.2heng.xin/avatar . Leave it "
"blank if you do not need."
msgstr ""
#: options.php:1051
msgid "Comment image upload API" msgid "Comment image upload API"
msgstr "" msgstr ""
#: options.php:1015 #: options.php:1056
msgid "Imgur (https://imgur.com)" msgid "Imgur (https://imgur.com)"
msgstr "" msgstr ""
#: options.php:1016 #: options.php:1057
msgid "SM.MS (https://sm.ms)" msgid "SM.MS (https://sm.ms)"
msgstr "" msgstr ""
#: options.php:1017 #: options.php:1058
msgid "Chevereto (https://chevereto.com)" msgid "Chevereto (https://chevereto.com)"
msgstr "" msgstr ""
#: options.php:1021 #: options.php:1062
msgid "Imgur Client ID" msgid "Imgur Client ID"
msgstr "" msgstr ""
#: options.php:1022 #: options.php:1063
msgid "" msgid ""
"Register your application <a href=\"https://api.imgur.com/oauth2/addclient" "Register your application <a href=\"https://api.imgur.com/oauth2/addclient"
"\">here</a>, note we only need the Client ID here." "\">here</a>, note we only need the Client ID here."
msgstr "" msgstr ""
#: options.php:1028 #: options.php:1069
msgid "SM.MS Secret Token" msgid "SM.MS Secret Token"
msgstr "" msgstr ""
#: options.php:1029 #: options.php:1070
msgid "" msgid ""
"Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>." "Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>."
msgstr "" msgstr ""
#: options.php:1035 #: options.php:1076
msgid "Chevereto API v1 key" msgid "Chevereto API v1 key"
msgstr "" msgstr ""
#: options.php:1036 #: options.php:1077
msgid "Get your API key here: " msgid "Get your API key here: "
msgstr "" msgstr ""
#: options.php:1042 #: options.php:1083
msgid "Chevereto URL" msgid "Chevereto URL"
msgstr "" msgstr ""
#: options.php:1043 #: options.php:1084
msgid "" msgid ""
"Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto." "Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto."
"com" "com"
msgstr "" msgstr ""
#: options.php:1049 #: options.php:1090
msgid "Comment images proxy" msgid "Comment images proxy"
msgstr "" msgstr ""
#: options.php:1050 #: options.php:1091
msgid "" msgid ""
"A front-ed proxy for the uploaded images. Leave it blank if you do not need." "A front-ed proxy for the uploaded images. Leave it blank if you do not need."
msgstr "" msgstr ""
#: options.php:1056 #: options.php:1097
msgid "Imgur upload proxy" msgid "Imgur upload proxy"
msgstr "" msgstr ""
#: options.php:1057 #: options.php:1098
msgid "" msgid ""
"A back-ed proxy to upload images. You may set a self hosted proxy with " "A back-ed proxy to upload images. You may set a self hosted proxy with "
"Nginx, following my <a href=\"https://2heng.xin/2018/06/06/javascript-upload-" "Nginx, following my <a href=\"https://2heng.xin/2018/06/06/javascript-upload-"
@ -1550,151 +1622,151 @@ msgid ""
"a>】" "a>】"
msgstr "" msgstr ""
#: options.php:1063 #: options.php:1104
msgid "Enable live search" msgid "Enable live search"
msgstr "" msgstr ""
#: options.php:1064 #: options.php:1105
msgid "" msgid ""
"Real-time search in the foreground, call the Rest API to update the cache " "Real-time search in the foreground, call the Rest API to update the cache "
"every hour, you can manually set the cache time in functions.php" "every hour, you can manually set the cache time in api.php"
msgstr "" msgstr ""
#: options.php:1070 #: options.php:1111
msgid "Include comments in live search" msgid "Include comments in live search"
msgstr "" msgstr ""
#: options.php:1071 #: options.php:1112
msgid "" msgid ""
"Search for comments in real-time search (not recommended if there are too " "Search for comments in real-time search (not recommended if there are too "
"many comments on the site)" "many comments on the site)"
msgstr "" msgstr ""
#: options.php:1077 #: options.php:1118
msgid "Enable baguetteBox" msgid "Enable baguetteBox"
msgstr "" msgstr ""
#: options.php:1078 #: options.php:1119
msgid "" msgid ""
"Default off<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox" "Default off<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox"
"\">please read wiki</a>" "\">please read wiki</a>"
msgstr "" msgstr ""
#: options.php:1084 #: options.php:1125
msgid "Enable lazyload in posts" msgid "Enable lazyload in posts"
msgstr "" msgstr ""
#: options.php:1091 #: options.php:1132
msgid "lazyload spinner" msgid "lazyload spinner"
msgstr "" msgstr ""
#: options.php:1092 #: options.php:1133
msgid "The placeholder to display when the image loads, fill in the image url" msgid "The placeholder to display when the image loads, fill in the image url"
msgstr "" msgstr ""
#: options.php:1098 #: options.php:1139
msgid "Whether to enable the clipboard copyright" msgid "Whether to enable the clipboard copyright"
msgstr "" msgstr ""
#: options.php:1099 #: options.php:1140
msgid "" msgid ""
"Automatically add a copyright to the clipboard when copying more than 30 " "Automatically add a copyright to the clipboard when copying more than 30 "
"bytes, which is enabled by default." "bytes, which is enabled by default."
msgstr "" msgstr ""
#: options.php:1105 #: options.php:1146
msgid "Email address prefix" msgid "Email address prefix"
msgstr "" msgstr ""
#: options.php:1106 #: options.php:1147
msgid "" msgid ""
"For sending system mail, the sender address displayed in the user's mailbox, " "For sending system mail, the sender address displayed in the user's mailbox, "
"do not use Chinese, the default system email address is bibi@your_domain_name" "do not use Chinese, the default system email address is bibi@your_domain_name"
msgstr "" msgstr ""
#: options.php:1112 #: options.php:1153
msgid "Comments reply notification" msgid "Comments reply notification"
msgstr "" msgstr ""
#: options.php:1113 #: options.php:1154
msgid "" msgid ""
"WordPress will use email to notify users when their comments receive a reply " "WordPress will use email to notify users when their comments receive a reply "
"by default. Tick this item allows users to set their own comments reply " "by default. Tick this item allows users to set their own comments reply "
"notification" "notification"
msgstr "" msgstr ""
#: options.php:1119 #: options.php:1160
msgid "Administrator comment notification" msgid "Administrator comment notification"
msgstr "" msgstr ""
#: options.php:1120 #: options.php:1161
msgid "" msgid ""
"Whether to use email notification when the administrator's comments receive " "Whether to use email notification when the administrator's comments receive "
"a reply" "a reply"
msgstr "" msgstr ""
#: options.php:1126 #: options.php:1167
msgid "Enable private comment" msgid "Enable private comment"
msgstr "" msgstr ""
#: options.php:1127 #: options.php:1168
msgid "Allow users to set their own comments to be invisible to others" msgid "Allow users to set their own comments to be invisible to others"
msgstr "" msgstr ""
#: options.php:1133 #: options.php:1174
msgid "Human verification" msgid "Human verification"
msgstr "" msgstr ""
#: options.php:1134 #: options.php:1175
msgid "Enable human verification" msgid "Enable human verification"
msgstr "" msgstr ""
#: options.php:1140 #: options.php:1181
msgid "QQ avatar link encryption" msgid "QQ avatar link encryption"
msgstr "" msgstr ""
#: options.php:1141 #: options.php:1182
msgid "Do not display the user's qq avatar links directly." msgid "Do not display the user's qq avatar links directly."
msgstr "" msgstr ""
#: options.php:1146 #: options.php:1187
msgid "Off (default)" msgid "Off (default)"
msgstr "" msgstr ""
#: options.php:1147 #: options.php:1188
msgid "use redirect (general security)" msgid "use redirect (general security)"
msgstr "" msgstr ""
#: options.php:1148 #: options.php:1189
msgid "fetch data at backend (high security)" msgid "fetch data at backend (high security)"
msgstr "" msgstr ""
#: options.php:1149 #: options.php:1190
msgid "fetch data at backend (high securityslow)" msgid "fetch data at backend (high securityslow)"
msgstr "" msgstr ""
#: options.php:1153 #: options.php:1194
msgid "Comment UA infomation" msgid "Comment UA infomation"
msgstr "" msgstr ""
#: options.php:1154 #: options.php:1195
msgid "" msgid ""
"Check to enable, display the user's browser, operating system information" "Check to enable, display the user's browser, operating system information"
msgstr "" msgstr ""
#: options.php:1160 #: options.php:1201
msgid "Enable disqus" msgid "Enable disqus"
msgstr "" msgstr ""
#: options.php:1161 #: options.php:1202
msgid "Enable disqus for comment" msgid "Enable disqus for comment"
msgstr "" msgstr ""
#: options.php:1167 #: options.php:1208
msgid "Time Zone adjustment" msgid "Time Zone adjustment"
msgstr "" msgstr ""
#: options.php:1168 #: options.php:1209
msgid "" msgid ""
"If the comment has a time difference problem adjust here, fill in an " "If the comment has a time difference problem adjust here, fill in an "
"integer, the calculation method: actual_time = display_error_time - " "integer, the calculation method: actual_time = display_error_time - "
@ -1753,6 +1825,10 @@ msgstr ""
msgid "Attribution-NonCommercial-ShareAlike 4.0 International" msgid "Attribution-NonCommercial-ShareAlike 4.0 International"
msgstr "" msgstr ""
#: user/page-bangumi.php:30
msgid "Please fill in the Bilibili UID in Sakura Options."
msgstr ""
#: user/page-login.php:18 #: user/page-login.php:18
msgid "Remember Me" msgid "Remember Me"
msgstr "" msgstr ""
@ -1817,7 +1893,11 @@ msgstr ""
msgid "Sign up" msgid "Sign up"
msgstr "" msgstr ""
#: user/page-register.php:92 #: user/page-register.php:90
msgid "Success! Redirecting......"
msgstr ""
#: user/page-register.php:95
msgid "Registration is not open yet." msgid "Registration is not open yet."
msgstr "" msgstr ""

View File

@ -3,7 +3,7 @@ msgid ""
msgstr "" msgstr ""
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
"Project-Id-Version: Sakura\n" "Project-Id-Version: Sakura\n"
"POT-Creation-Date: 2020-02-13 23:59+0800\n" "POT-Creation-Date: 2020-04-06 17:55+0800\n"
"PO-Revision-Date: 2019-11-01 14:27+0800\n" "PO-Revision-Date: 2019-11-01 14:27+0800\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
@ -142,73 +142,73 @@ msgstr ""
msgid "Nav Menus" msgid "Nav Menus"
msgstr "" msgstr ""
#: functions.php:420 inc/theme_plus.php:186 layouts/authorprofile.php:11 options.php:121 #: functions.php:423 inc/theme_plus.php:186 layouts/authorprofile.php:11 options.php:121
msgid "Author" msgid "Author"
msgstr "" msgstr ""
#: functions.php:420 #: functions.php:423
msgid "Blogger" msgid "Blogger"
msgstr "" msgstr ""
#: functions.php:424 #: functions.php:427
msgid "Location" msgid "Location"
msgstr "" msgstr ""
#: functions.php:428 #: functions.php:431
msgid "Private" msgid "Private"
msgstr "" msgstr ""
#: functions.php:430 #: functions.php:433
msgid "Yes" msgid "Yes"
msgstr "" msgstr ""
#: functions.php:432 #: functions.php:435
msgid "No" msgid "No"
msgstr "" msgstr ""
#: functions.php:435 #: functions.php:438
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: functions.php:524 #: functions.php:527
msgid "" msgid ""
"Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/\" target=\"_blank" "Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/\" target=\"_blank"
"\">WP-Statistics</a>" "\">WP-Statistics</a>"
msgstr "" msgstr ""
#: functions.php:574 #: functions.php:577
msgid "This guy is so lazy ╮(╯▽╰)╭" msgid "This guy is so lazy ╮(╯▽╰)╭"
msgstr "" msgstr ""
#: functions.php:1329 #: functions.php:1334
msgid "All expand/collapse" msgid "All expand/collapse"
msgstr "" msgstr ""
#: functions.php:1350 options.php:834 #: functions.php:1355 options.php:834
msgid " " msgid " "
msgstr "" msgstr ""
#: functions.php:1354 #: functions.php:1359
msgid " post(s)" msgid " post(s)"
msgstr "" msgstr ""
#: functions.php:1377 functions.php:1380 inc/theme_plus.php:478 #: functions.php:1382 functions.php:1385 inc/theme_plus.php:478
msgid "Dashboard" msgid "Dashboard"
msgstr "" msgstr ""
#: functions.php:1606 #: functions.php:1611
msgid "<b>ERROR</b>: This email domain (<b>@" msgid "<b>ERROR</b>: This email domain (<b>@"
msgstr "" msgstr ""
#: functions.php:1711 #: functions.php:1716
msgid "QQ" msgid "QQ"
msgstr "" msgstr ""
#: functions.php:1781 #: functions.php:1788
msgid "Sidebar" msgid "Sidebar"
msgstr "" msgstr ""
#: functions.php:1893 #: functions.php:1900
msgid "" msgid ""
"<b> For a better experience, please do not set <a href=\"/wp-admin/options-permalink.php\"> " "<b> For a better experience, please do not set <a href=\"/wp-admin/options-permalink.php\"> "
"permalink </a> as plain. To do this, you may need to configure <a href=\"https://www.wpdaxue." "permalink </a> as plain. To do this, you may need to configure <a href=\"https://www.wpdaxue."
@ -220,10 +220,6 @@ msgstr ""
msgid "page %s " msgid "page %s "
msgstr "" msgstr ""
#: inc/api.php:301 inc/theme_plus.php:727
msgid "The comment is private"
msgstr ""
#: inc/categories-images.php:45 inc/categories-images.php:66 #: inc/categories-images.php:45 inc/categories-images.php:66
msgid "category/tag image" msgid "category/tag image"
msgstr "" msgstr ""
@ -244,6 +240,10 @@ msgstr ""
msgid "no image" msgid "no image"
msgstr "" msgstr ""
#: inc/classes/Cache.php:70 inc/theme_plus.php:727
msgid "The comment is private"
msgstr ""
#: inc/options-framework.php:182 inc/options-framework.php:183 inc/options-framework.php:412 #: inc/options-framework.php:182 inc/options-framework.php:183 inc/options-framework.php:412
msgid "Sakura Options" msgid "Sakura Options"
msgstr "" msgstr ""
@ -911,7 +911,7 @@ msgstr ""
msgid "Whether to turn on the top-feature" msgid "Whether to turn on the top-feature"
msgstr "" msgstr ""
#: options.php:446 options.php:1085 #: options.php:446 options.php:1126
msgid "Default on" msgid "Default on"
msgstr "" msgstr ""
@ -1359,160 +1359,231 @@ msgid "Footer float music player"
msgstr "" msgstr ""
#: options.php:926 #: options.php:926
msgid "" msgid "Choose which platform you'll use."
"If you don't need the player just leave it blank.Fill in the \"song list\" ID of Netease Cloud " msgstr ""
"Music, eg: https://music.163.com/#/playlist?id=2288037900 The ID is 2288037900"
#: options.php:931
msgid "Netease Cloud Music (default)"
msgstr "" msgstr ""
#: options.php:932 #: options.php:932
msgid "Version Control" msgid "Xiami Music"
msgstr "" msgstr ""
#: options.php:933 #: options.php:933
msgid "Used to update frontend cookies and browser caches, any string can be used" msgid "KuGou Music"
msgstr "" msgstr ""
#: options.php:939 #: options.php:934
msgid "Enable PJAX (recommand on)" msgid "Baidu Music"
msgstr ""
#: options.php:935
msgid "QQ Music (may fail) "
msgstr ""
#: options.php:936
msgid "Off"
msgstr "" msgstr ""
#: options.php:940 #: options.php:940
msgid "Song list ID"
msgstr ""
#: options.php:941
msgid ""
"Fill in the \"song list\" ID, eg: https://music.163.com/#/playlist?id=2288037900 The ID is "
"2288037900"
msgstr ""
#: options.php:947
msgid "Netease Cloud Music cookie"
msgstr ""
#: options.php:948
msgid ""
"For Netease Cloud Music, fill in your vip account's cookies if you want to play special tracks."
"<b>If you don't know what does mean, left it blank.</b>"
msgstr ""
#: options.php:954
msgid "Version Control"
msgstr ""
#: options.php:955
msgid "Used to update frontend cookies and browser caches, any string can be used"
msgstr ""
#: options.php:961
msgid "Enable PJAX (recommand on)"
msgstr ""
#: options.php:962
msgid "The principle is the same as Ajax" msgid "The principle is the same as Ajax"
msgstr "" msgstr ""
#: options.php:946 #: options.php:968
msgid "Enable NProgress progress bar" msgid "Enable NProgress progress bar"
msgstr "" msgstr ""
#: options.php:947 options.php:954 options.php:961 #: options.php:969 options.php:976 options.php:983
msgid "Default off, check on" msgid "Default off, check on"
msgstr "" msgstr ""
#: options.php:953 #: options.php:975
msgid "Enable sidebar widget" msgid "Enable sidebar widget"
msgstr "" msgstr ""
#: options.php:960 #: options.php:982
msgid "Enable Announcement" msgid "Enable Announcement"
msgstr "" msgstr ""
#: options.php:967 #: options.php:989
msgid "Announcement content" msgid "Announcement content"
msgstr "" msgstr ""
#: options.php:968 #: options.php:990
msgid "" msgid ""
"Announcement content, the text exceeds 142 bytes will be scrolled display (mobile device is " "Announcement content, the text exceeds 142 bytes will be scrolled display (mobile device is "
"invalid)" "invalid)"
msgstr "" msgstr ""
#: options.php:974 #: options.php:995
msgid "The categories of articles that don't not show on homepage" msgid "Bilibili UID"
msgstr "" msgstr ""
#: options.php:975 options.php:982 #: options.php:996
msgid "Fill in category ID, multiple IDs are divided by a comma \",\"" msgid ""
"Fill in your UID, eg.https://space.bilibili.com/13972644/, only fill in with the number part."
msgstr "" msgstr ""
#: options.php:981 #: options.php:1002
msgid "Images category" msgid "Bilibili Cookie"
msgstr ""
#: options.php:988
msgid "Statistics Interface"
msgstr ""
#: options.php:993
msgid "WP-Statistics plugin (Professional statistics, can exclude invalid access)"
msgstr ""
#: options.php:994
msgid "Theme built-in (simple statistics, calculate each page access request)"
msgstr ""
#: options.php:998
msgid "Statistical data display format"
msgstr "" msgstr ""
#: options.php:1003 #: options.php:1003
msgid "23333 Views (default)" msgid ""
"Fill in your Cookies, go to your bilibili homepage, you can get cookies in brownser network "
"pannel with pressing F12. If left this blank, you'll not get the progress."
msgstr "" msgstr ""
#: options.php:1004 #: options.php:1008
msgid "23,333 Views (britain)" msgid "The categories of articles that don't not show on homepage"
msgstr "" msgstr ""
#: options.php:1005 #: options.php:1009 options.php:1016
msgid "23 333 Views (french)" msgid "Fill in category ID, multiple IDs are divided by a comma \",\""
msgstr ""
#: options.php:1006
msgid "23k Views (chinese)"
msgstr ""
#: options.php:1010
msgid "Comment image upload API"
msgstr "" msgstr ""
#: options.php:1015 #: options.php:1015
msgid "Imgur (https://imgur.com)" msgid "Images category"
msgstr ""
#: options.php:1016
msgid "SM.MS (https://sm.ms)"
msgstr ""
#: options.php:1017
msgid "Chevereto (https://chevereto.com)"
msgstr ""
#: options.php:1021
msgid "Imgur Client ID"
msgstr "" msgstr ""
#: options.php:1022 #: options.php:1022
msgid "Statistics Interface"
msgstr ""
#: options.php:1027
msgid "WP-Statistics plugin (Professional statistics, can exclude invalid access)"
msgstr ""
#: options.php:1028
msgid "Theme built-in (simple statistics, calculate each page access request)"
msgstr ""
#: options.php:1032
msgid "Statistical data display format"
msgstr ""
#: options.php:1037
msgid "23333 Views (default)"
msgstr ""
#: options.php:1038
msgid "23,333 Views (britain)"
msgstr ""
#: options.php:1039
msgid "23 333 Views (french)"
msgstr ""
#: options.php:1040
msgid "23k Views (chinese)"
msgstr ""
#: options.php:1044
msgid "Gravatar avatar proxy"
msgstr ""
#: options.php:1045
msgid ""
"A front-ed proxy for Gravatar, eg. gravatar.2heng.xin/avatar . Leave it blank if you do not "
"need."
msgstr ""
#: options.php:1051
msgid "Comment image upload API"
msgstr ""
#: options.php:1056
msgid "Imgur (https://imgur.com)"
msgstr ""
#: options.php:1057
msgid "SM.MS (https://sm.ms)"
msgstr ""
#: options.php:1058
msgid "Chevereto (https://chevereto.com)"
msgstr ""
#: options.php:1062
msgid "Imgur Client ID"
msgstr ""
#: options.php:1063
msgid "" msgid ""
"Register your application <a href=\"https://api.imgur.com/oauth2/addclient\">here</a>, note we " "Register your application <a href=\"https://api.imgur.com/oauth2/addclient\">here</a>, note we "
"only need the Client ID here." "only need the Client ID here."
msgstr "" msgstr ""
#: options.php:1028 #: options.php:1069
msgid "SM.MS Secret Token" msgid "SM.MS Secret Token"
msgstr "" msgstr ""
#: options.php:1029 #: options.php:1070
msgid "Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>." msgid "Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>."
msgstr "" msgstr ""
#: options.php:1035 #: options.php:1076
msgid "Chevereto API v1 key" msgid "Chevereto API v1 key"
msgstr "" msgstr ""
#: options.php:1036 #: options.php:1077
msgid "Get your API key here: " msgid "Get your API key here: "
msgstr "" msgstr ""
#: options.php:1042 #: options.php:1083
msgid "Chevereto URL" msgid "Chevereto URL"
msgstr "" msgstr ""
#: options.php:1043 #: options.php:1084
msgid "Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto.com" msgid "Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto.com"
msgstr "" msgstr ""
#: options.php:1049 #: options.php:1090
msgid "Comment images proxy" msgid "Comment images proxy"
msgstr "" msgstr ""
#: options.php:1050 #: options.php:1091
msgid "A front-ed proxy for the uploaded images. Leave it blank if you do not need." msgid "A front-ed proxy for the uploaded images. Leave it blank if you do not need."
msgstr "" msgstr ""
#: options.php:1056 #: options.php:1097
msgid "Imgur upload proxy" msgid "Imgur upload proxy"
msgstr "" msgstr ""
#: options.php:1057 #: options.php:1098
msgid "" msgid ""
"A back-ed proxy to upload images. You may set a self hosted proxy with Nginx, following my <a " "A back-ed proxy to upload images. You may set a self hosted proxy with Nginx, following my <a "
"href=\"https://2heng.xin/2018/06/06/javascript-upload-images-with-imgur-api/\">turtal</a>. " "href=\"https://2heng.xin/2018/06/06/javascript-upload-images-with-imgur-api/\">turtal</a>. "
@ -1521,146 +1592,146 @@ msgid ""
"</a>】" "</a>】"
msgstr "" msgstr ""
#: options.php:1063 #: options.php:1104
msgid "Enable live search" msgid "Enable live search"
msgstr "" msgstr ""
#: options.php:1064 #: options.php:1105
msgid "" msgid ""
"Real-time search in the foreground, call the Rest API to update the cache every hour, you can " "Real-time search in the foreground, call the Rest API to update the cache every hour, you can "
"manually set the cache time in functions.php" "manually set the cache time in api.php"
msgstr "" msgstr ""
#: options.php:1070 #: options.php:1111
msgid "Include comments in live search" msgid "Include comments in live search"
msgstr "" msgstr ""
#: options.php:1071 #: options.php:1112
msgid "" msgid ""
"Search for comments in real-time search (not recommended if there are too many comments on the " "Search for comments in real-time search (not recommended if there are too many comments on the "
"site)" "site)"
msgstr "" msgstr ""
#: options.php:1077 #: options.php:1118
msgid "Enable baguetteBox" msgid "Enable baguetteBox"
msgstr "" msgstr ""
#: options.php:1078 #: options.php:1119
msgid "" msgid ""
"Default off<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox\">please read wiki</a>" "Default off<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox\">please read wiki</a>"
msgstr "" msgstr ""
#: options.php:1084 #: options.php:1125
msgid "Enable lazyload in posts" msgid "Enable lazyload in posts"
msgstr "" msgstr ""
#: options.php:1091 #: options.php:1132
msgid "lazyload spinner" msgid "lazyload spinner"
msgstr "" msgstr ""
#: options.php:1092 #: options.php:1133
msgid "The placeholder to display when the image loads, fill in the image url" msgid "The placeholder to display when the image loads, fill in the image url"
msgstr "" msgstr ""
#: options.php:1098 #: options.php:1139
msgid "Whether to enable the clipboard copyright" msgid "Whether to enable the clipboard copyright"
msgstr "" msgstr ""
#: options.php:1099 #: options.php:1140
msgid "" msgid ""
"Automatically add a copyright to the clipboard when copying more than 30 bytes, which is " "Automatically add a copyright to the clipboard when copying more than 30 bytes, which is "
"enabled by default." "enabled by default."
msgstr "" msgstr ""
#: options.php:1105 #: options.php:1146
msgid "Email address prefix" msgid "Email address prefix"
msgstr "" msgstr ""
#: options.php:1106 #: options.php:1147
msgid "" msgid ""
"For sending system mail, the sender address displayed in the user's mailbox, do not use " "For sending system mail, the sender address displayed in the user's mailbox, do not use "
"Chinese, the default system email address is bibi@your_domain_name" "Chinese, the default system email address is bibi@your_domain_name"
msgstr "" msgstr ""
#: options.php:1112 #: options.php:1153
msgid "Comments reply notification" msgid "Comments reply notification"
msgstr "" msgstr ""
#: options.php:1113 #: options.php:1154
msgid "" msgid ""
"WordPress will use email to notify users when their comments receive a reply by default. Tick " "WordPress will use email to notify users when their comments receive a reply by default. Tick "
"this item allows users to set their own comments reply notification" "this item allows users to set their own comments reply notification"
msgstr "" msgstr ""
#: options.php:1119 #: options.php:1160
msgid "Administrator comment notification" msgid "Administrator comment notification"
msgstr "" msgstr ""
#: options.php:1120 #: options.php:1161
msgid "Whether to use email notification when the administrator's comments receive a reply" msgid "Whether to use email notification when the administrator's comments receive a reply"
msgstr "" msgstr ""
#: options.php:1126 #: options.php:1167
msgid "Enable private comment" msgid "Enable private comment"
msgstr "" msgstr ""
#: options.php:1127 #: options.php:1168
msgid "Allow users to set their own comments to be invisible to others" msgid "Allow users to set their own comments to be invisible to others"
msgstr "" msgstr ""
#: options.php:1133 #: options.php:1174
msgid "Human verification" msgid "Human verification"
msgstr "" msgstr ""
#: options.php:1134 #: options.php:1175
msgid "Enable human verification" msgid "Enable human verification"
msgstr "" msgstr ""
#: options.php:1140 #: options.php:1181
msgid "QQ avatar link encryption" msgid "QQ avatar link encryption"
msgstr "" msgstr ""
#: options.php:1141 #: options.php:1182
msgid "Do not display the user's qq avatar links directly." msgid "Do not display the user's qq avatar links directly."
msgstr "" msgstr ""
#: options.php:1146 #: options.php:1187
msgid "Off (default)" msgid "Off (default)"
msgstr "" msgstr ""
#: options.php:1147 #: options.php:1188
msgid "use redirect (general security)" msgid "use redirect (general security)"
msgstr "" msgstr ""
#: options.php:1148 #: options.php:1189
msgid "fetch data at backend (high security)" msgid "fetch data at backend (high security)"
msgstr "" msgstr ""
#: options.php:1149 #: options.php:1190
msgid "fetch data at backend (high securityslow)" msgid "fetch data at backend (high securityslow)"
msgstr "" msgstr ""
#: options.php:1153 #: options.php:1194
msgid "Comment UA infomation" msgid "Comment UA infomation"
msgstr "" msgstr ""
#: options.php:1154 #: options.php:1195
msgid "Check to enable, display the user's browser, operating system information" msgid "Check to enable, display the user's browser, operating system information"
msgstr "" msgstr ""
#: options.php:1160 #: options.php:1201
msgid "Enable disqus" msgid "Enable disqus"
msgstr "" msgstr ""
#: options.php:1161 #: options.php:1202
msgid "Enable disqus for comment" msgid "Enable disqus for comment"
msgstr "" msgstr ""
#: options.php:1167 #: options.php:1208
msgid "Time Zone adjustment" msgid "Time Zone adjustment"
msgstr "" msgstr ""
#: options.php:1168 #: options.php:1209
msgid "" msgid ""
"If the comment has a time difference problem adjust here, fill in an integer, the calculation " "If the comment has a time difference problem adjust here, fill in an integer, the calculation "
"method: actual_time = display_error_time - the_integer_you_entered (unit: hour)" "method: actual_time = display_error_time - the_integer_you_entered (unit: hour)"
@ -1714,6 +1785,10 @@ msgstr ""
msgid "Attribution-NonCommercial-ShareAlike 4.0 International" msgid "Attribution-NonCommercial-ShareAlike 4.0 International"
msgstr "" msgstr ""
#: user/page-bangumi.php:30
msgid "Please fill in the Bilibili UID in Sakura Options."
msgstr ""
#: user/page-login.php:18 #: user/page-login.php:18
msgid "Remember Me" msgid "Remember Me"
msgstr "" msgstr ""
@ -1777,6 +1852,10 @@ msgstr ""
msgid "Sign up" msgid "Sign up"
msgstr "" msgstr ""
#: user/page-register.php:92 #: user/page-register.php:90
msgid "Success! Redirecting......"
msgstr ""
#: user/page-register.php:95
msgid "Registration is not open yet." msgid "Registration is not open yet."
msgstr "" msgstr ""

Binary file not shown.

View File

@ -1,8 +1,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Sakura\n" "Project-Id-Version: Sakura\n"
"POT-Creation-Date: 2020-02-13 23:59+0800\n" "POT-Creation-Date: 2020-04-06 17:55+0800\n"
"PO-Revision-Date: 2020-02-13 23:59+0800\n" "PO-Revision-Date: 2020-04-06 17:56+0800\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language-Team: \n" "Language-Team: \n"
"Language: zh_CN\n" "Language: zh_CN\n"
@ -142,36 +142,36 @@ msgstr "小工具"
msgid "Nav Menus" msgid "Nav Menus"
msgstr "导航菜单" msgstr "导航菜单"
#: functions.php:420 inc/theme_plus.php:186 layouts/authorprofile.php:11 #: functions.php:423 inc/theme_plus.php:186 layouts/authorprofile.php:11
#: options.php:121 #: options.php:121
msgid "Author" msgid "Author"
msgstr "作者" msgstr "作者"
#: functions.php:420 #: functions.php:423
msgid "Blogger" msgid "Blogger"
msgstr "博主" msgstr "博主"
#: functions.php:424 #: functions.php:427
msgid "Location" msgid "Location"
msgstr "来自" msgstr "来自"
#: functions.php:428 #: functions.php:431
msgid "Private" msgid "Private"
msgstr "私密" msgstr "私密"
#: functions.php:430 #: functions.php:433
msgid "Yes" msgid "Yes"
msgstr "是" msgstr "是"
#: functions.php:432 #: functions.php:435
msgid "No" msgid "No"
msgstr "否" msgstr "否"
#: functions.php:435 #: functions.php:438
msgid "Edit" msgid "Edit"
msgstr "编辑" msgstr "编辑"
#: functions.php:524 #: functions.php:527
msgid "" msgid ""
"Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/" "Please install pulgin <a href=\"https://wordpress.org/plugins/wp-statistics/"
"\" target=\"_blank\">WP-Statistics</a>" "\" target=\"_blank\">WP-Statistics</a>"
@ -179,39 +179,39 @@ msgstr ""
"请安装插件 <a href=\"https://wordpress.org/plugins/wp-statistics/\" target=" "请安装插件 <a href=\"https://wordpress.org/plugins/wp-statistics/\" target="
"\"_blank\">WP-Statistics</a>" "\"_blank\">WP-Statistics</a>"
#: functions.php:574 #: functions.php:577
msgid "This guy is so lazy ╮(╯▽╰)╭" msgid "This guy is so lazy ╮(╯▽╰)╭"
msgstr "这家伙好懒╮(╯▽╰)╭" msgstr "这家伙好懒╮(╯▽╰)╭"
#: functions.php:1329 #: functions.php:1334
msgid "All expand/collapse" msgid "All expand/collapse"
msgstr "全部展开/收缩" msgstr "全部展开/收缩"
#: functions.php:1350 options.php:834 #: functions.php:1355 options.php:834
msgid " " msgid " "
msgstr "" msgstr ""
#: functions.php:1354 #: functions.php:1359
msgid " post(s)" msgid " post(s)"
msgstr " 篇文章" msgstr " 篇文章"
#: functions.php:1377 functions.php:1380 inc/theme_plus.php:478 #: functions.php:1382 functions.php:1385 inc/theme_plus.php:478
msgid "Dashboard" msgid "Dashboard"
msgstr "管理中心" msgstr "管理中心"
#: functions.php:1606 #: functions.php:1611
msgid "<b>ERROR</b>: This email domain (<b>@" msgid "<b>ERROR</b>: This email domain (<b>@"
msgstr "" msgstr ""
#: functions.php:1711 #: functions.php:1716
msgid "QQ" msgid "QQ"
msgstr "" msgstr ""
#: functions.php:1781 #: functions.php:1788
msgid "Sidebar" msgid "Sidebar"
msgstr "侧栏" msgstr "侧栏"
#: functions.php:1893 #: functions.php:1900
msgid "" msgid ""
"<b> For a better experience, please do not set <a href=\"/wp-admin/options-" "<b> For a better experience, please do not set <a href=\"/wp-admin/options-"
"permalink.php\"> permalink </a> as plain. To do this, you may need to " "permalink.php\"> permalink </a> as plain. To do this, you may need to "
@ -227,10 +227,6 @@ msgstr ""
msgid "page %s " msgid "page %s "
msgstr "第 %s 页 " msgstr "第 %s 页 "
#: inc/api.php:301 inc/theme_plus.php:727
msgid "The comment is private"
msgstr "该评论为私密评论"
#: inc/categories-images.php:45 inc/categories-images.php:66 #: inc/categories-images.php:45 inc/categories-images.php:66
msgid "category/tag image" msgid "category/tag image"
msgstr "分类/标签图像" msgstr "分类/标签图像"
@ -252,6 +248,10 @@ msgstr "图像"
msgid "no image" msgid "no image"
msgstr "暂无" msgstr "暂无"
#: inc/classes/Cache.php:70 inc/theme_plus.php:727
msgid "The comment is private"
msgstr "该评论为私密评论"
#: inc/options-framework.php:182 inc/options-framework.php:183 #: inc/options-framework.php:182 inc/options-framework.php:183
#: inc/options-framework.php:412 #: inc/options-framework.php:412
msgid "Sakura Options" msgid "Sakura Options"
@ -938,7 +938,7 @@ msgstr "点点"
msgid "Whether to turn on the top-feature" msgid "Whether to turn on the top-feature"
msgstr "是否开启聚焦" msgstr "是否开启聚焦"
#: options.php:446 options.php:1085 #: options.php:446 options.php:1126
msgid "Default on" msgid "Default on"
msgstr "默认开启" msgstr "默认开启"
@ -1412,52 +1412,95 @@ msgid "Footer float music player"
msgstr "页脚悬浮播放器" msgstr "页脚悬浮播放器"
#: options.php:926 #: options.php:926
msgid "" msgid "Choose which platform you'll use."
"If you don't need the player just leave it blank.Fill in the \"song list\" " msgstr "选择你要使用的平台。"
"ID of Netease Cloud Music, eg: https://music.163.com/#/playlist?"
"id=2288037900 The ID is 2288037900" #: options.php:931
msgstr "" msgid "Netease Cloud Music (default)"
"如果不需要播放器留空即可。填写网易云音乐的「歌单」IDeghttps://music.163." msgstr "网易云音乐(默认)"
"com/#/playlist?id=2288037900的ID是2288037900"
#: options.php:932 #: options.php:932
msgid "Xiami Music"
msgstr "虾米音乐"
#: options.php:933
msgid "KuGou Music"
msgstr "酷狗音乐"
#: options.php:934
msgid "Baidu Music"
msgstr "百度音乐"
#: options.php:935
msgid "QQ Music (may fail) "
msgstr "QQ音乐可能解析失败 "
#: options.php:936
msgid "Off"
msgstr "关闭"
#: options.php:940
msgid "Song list ID"
msgstr "「歌单」ID"
#: options.php:941
msgid ""
"Fill in the \"song list\" ID, eg: https://music.163.com/#/playlist?"
"id=2288037900 The ID is 2288037900"
msgstr ""
"填写「歌单」IDeghttps://music.163.com/#/playlist?id=2288037900的ID是"
"2288037900"
#: options.php:947
msgid "Netease Cloud Music cookie"
msgstr "网易云音乐 Cookies"
#: options.php:948
msgid ""
"For Netease Cloud Music, fill in your vip account's cookies if you want to "
"play special tracks.<b>If you don't know what does mean, left it blank.</b>"
msgstr ""
"针对网易云音乐如果你想播放特殊曲目填入你的vip帐号Cookies。<b>如果不知道这"
"是什么意思,忽略即可。</b>"
#: options.php:954
msgid "Version Control" msgid "Version Control"
msgstr "版本控制" msgstr "版本控制"
#: options.php:933 #: options.php:955
msgid "" msgid ""
"Used to update frontend cookies and browser caches, any string can be used" "Used to update frontend cookies and browser caches, any string can be used"
msgstr "用于更新前端 cookie 及浏览器缓存,可使用任意字符串" msgstr "用于更新前端 cookie 及浏览器缓存,可使用任意字符串"
#: options.php:939 #: options.php:961
msgid "Enable PJAX (recommand on)" msgid "Enable PJAX (recommand on)"
msgstr "开启PJAX局部刷新建议开启" msgstr "开启PJAX局部刷新建议开启"
#: options.php:940 #: options.php:962
msgid "The principle is the same as Ajax" msgid "The principle is the same as Ajax"
msgstr "原理与Ajax相同" msgstr "原理与Ajax相同"
#: options.php:946 #: options.php:968
msgid "Enable NProgress progress bar" msgid "Enable NProgress progress bar"
msgstr "开启NProgress加载进度条" msgstr "开启NProgress加载进度条"
#: options.php:947 options.php:954 options.php:961 #: options.php:969 options.php:976 options.php:983
msgid "Default off, check on" msgid "Default off, check on"
msgstr "默认不开启,勾选开启" msgstr "默认不开启,勾选开启"
#: options.php:953 #: options.php:975
msgid "Enable sidebar widget" msgid "Enable sidebar widget"
msgstr "支持侧栏小部件" msgstr "支持侧栏小部件"
#: options.php:960 #: options.php:982
msgid "Enable Announcement" msgid "Enable Announcement"
msgstr "开启公告" msgstr "开启公告"
#: options.php:967 #: options.php:989
msgid "Announcement content" msgid "Announcement content"
msgstr "公告内容" msgstr "公告内容"
#: options.php:968 #: options.php:990
msgid "" msgid ""
"Announcement content, the text exceeds 142 bytes will be scrolled display " "Announcement content, the text exceeds 142 bytes will be scrolled display "
"(mobile device is invalid)" "(mobile device is invalid)"
@ -1465,72 +1508,108 @@ msgstr ""
"公告内容文字超出142个字节将会被滚动显示移动端无效一个汉字 = 3字节一" "公告内容文字超出142个字节将会被滚动显示移动端无效一个汉字 = 3字节一"
"个字母 = 1字节自己计算吧" "个字母 = 1字节自己计算吧"
#: options.php:974 #: options.php:995
msgid "Bilibili UID"
msgstr ""
#: options.php:996
msgid ""
"Fill in your UID, eg.https://space.bilibili.com/13972644/, only fill in with "
"the number part."
msgstr ""
"填写你的UID,例如https://space.bilibili.com/13972644/,只需填写数字部分。"
#: options.php:1002
msgid "Bilibili Cookie"
msgstr ""
#: options.php:1003
msgid ""
"Fill in your Cookies, go to your bilibili homepage, you can get cookies in "
"brownser network pannel with pressing F12. If left this blank, you'll not "
"get the progress."
msgstr ""
"填写你的帐号Cookies。F12打开浏览器网络面板前往你的B站主页获取Cookies。如果"
"留空,将不会显示追番进度。"
#: options.php:1008
msgid "The categories of articles that don't not show on homepage" msgid "The categories of articles that don't not show on homepage"
msgstr "首页不显示的分类文章" msgstr "首页不显示的分类文章"
#: options.php:975 options.php:982 #: options.php:1009 options.php:1016
msgid "Fill in category ID, multiple IDs are divided by a comma \",\"" msgid "Fill in category ID, multiple IDs are divided by a comma \",\""
msgstr "填写分类ID多个用英文“ , ”分开" msgstr "填写分类ID多个用英文“ , ”分开"
#: options.php:981 #: options.php:1015
msgid "Images category" msgid "Images category"
msgstr "图片展示分类" msgstr "图片展示分类"
#: options.php:988 #: options.php:1022
msgid "Statistics Interface" msgid "Statistics Interface"
msgstr "统计接口" msgstr "统计接口"
#: options.php:993 #: options.php:1027
msgid "" msgid ""
"WP-Statistics plugin (Professional statistics, can exclude invalid access)" "WP-Statistics plugin (Professional statistics, can exclude invalid access)"
msgstr "WP-Statistics 插件(专业性统计,可排除无效访问)" msgstr "WP-Statistics 插件(专业性统计,可排除无效访问)"
#: options.php:994 #: options.php:1028
msgid "Theme built-in (simple statistics, calculate each page access request)" msgid "Theme built-in (simple statistics, calculate each page access request)"
msgstr "主题内建(简单的统计,计算每一次页面访问请求)" msgstr "主题内建(简单的统计,计算每一次页面访问请求)"
#: options.php:998 #: options.php:1032
msgid "Statistical data display format" msgid "Statistical data display format"
msgstr "统计数据显示格式" msgstr "统计数据显示格式"
#: options.php:1003 #: options.php:1037
msgid "23333 Views (default)" msgid "23333 Views (default)"
msgstr "23333 次访问(默认)" msgstr "23333 次访问(默认)"
#: options.php:1004 #: options.php:1038
msgid "23,333 Views (britain)" msgid "23,333 Views (britain)"
msgstr "23,333 次访问(英式)" msgstr "23,333 次访问(英式)"
#: options.php:1005 #: options.php:1039
msgid "23 333 Views (french)" msgid "23 333 Views (french)"
msgstr "23 333 次访问(法式)" msgstr "23 333 次访问(法式)"
#: options.php:1006 #: options.php:1040
msgid "23k Views (chinese)" msgid "23k Views (chinese)"
msgstr "23k 次访问(中式)" msgstr "23k 次访问(中式)"
#: options.php:1010 #: options.php:1044
msgid "Gravatar avatar proxy"
msgstr "Gravatar头像代理"
#: options.php:1045
msgid ""
"A front-ed proxy for Gravatar, eg. gravatar.2heng.xin/avatar . Leave it "
"blank if you do not need."
msgstr ""
"填写Gravatar头像的代理地址例如gravatar.2heng.xin/avatar。留空则不使用代"
"理。"
#: options.php:1051
msgid "Comment image upload API" msgid "Comment image upload API"
msgstr "评论上传图片接口" msgstr "评论上传图片接口"
#: options.php:1015 #: options.php:1056
msgid "Imgur (https://imgur.com)" msgid "Imgur (https://imgur.com)"
msgstr "" msgstr ""
#: options.php:1016 #: options.php:1057
msgid "SM.MS (https://sm.ms)" msgid "SM.MS (https://sm.ms)"
msgstr "" msgstr ""
#: options.php:1017 #: options.php:1058
msgid "Chevereto (https://chevereto.com)" msgid "Chevereto (https://chevereto.com)"
msgstr "" msgstr ""
#: options.php:1021 #: options.php:1062
msgid "Imgur Client ID" msgid "Imgur Client ID"
msgstr "" msgstr ""
#: options.php:1022 #: options.php:1063
msgid "" msgid ""
"Register your application <a href=\"https://api.imgur.com/oauth2/addclient" "Register your application <a href=\"https://api.imgur.com/oauth2/addclient"
"\">here</a>, note we only need the Client ID here." "\">here</a>, note we only need the Client ID here."
@ -1538,48 +1617,48 @@ msgstr ""
"在<a href=\"https://api.imgur.com/oauth2/addclient\">这里</a>注册你的 " "在<a href=\"https://api.imgur.com/oauth2/addclient\">这里</a>注册你的 "
"application , 注意此处只需要填写 Client ID." "application , 注意此处只需要填写 Client ID."
#: options.php:1028 #: options.php:1069
msgid "SM.MS Secret Token" msgid "SM.MS Secret Token"
msgstr "" msgstr ""
#: options.php:1029 #: options.php:1070
msgid "" msgid ""
"Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>." "Register your application <a href=\"https://sm.ms/home/apitoken\">here</a>."
msgstr "在<a href=\"https://sm.ms/home/apitoken\">这里</a>获取 key." msgstr "在<a href=\"https://sm.ms/home/apitoken\">这里</a>获取 key."
#: options.php:1035 #: options.php:1076
msgid "Chevereto API v1 key" msgid "Chevereto API v1 key"
msgstr "" msgstr ""
#: options.php:1036 #: options.php:1077
msgid "Get your API key here: " msgid "Get your API key here: "
msgstr "在这里获取你的 API key " msgstr "在这里获取你的 API key "
#: options.php:1042 #: options.php:1083
msgid "Chevereto URL" msgid "Chevereto URL"
msgstr "" msgstr ""
#: options.php:1043 #: options.php:1084
msgid "" msgid ""
"Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto." "Your Chevereto homepage url, no slash in the end, eg. https://your.cherverto."
"com" "com"
msgstr "" msgstr ""
"你的 Chevereto 首页 url, 注意结尾没有 /, 例如https://your.cherverto.com" "你的 Chevereto 首页 url, 注意结尾没有 /, 例如https://your.cherverto.com"
#: options.php:1049 #: options.php:1090
msgid "Comment images proxy" msgid "Comment images proxy"
msgstr "评论图片代理" msgstr "评论图片代理"
#: options.php:1050 #: options.php:1091
msgid "" msgid ""
"A front-ed proxy for the uploaded images. Leave it blank if you do not need." "A front-ed proxy for the uploaded images. Leave it blank if you do not need."
msgstr "前端显示的图片的代理。" msgstr "前端显示的图片的代理。"
#: options.php:1056 #: options.php:1097
msgid "Imgur upload proxy" msgid "Imgur upload proxy"
msgstr "Imgur 上传代理" msgstr "Imgur 上传代理"
#: options.php:1057 #: options.php:1098
msgid "" msgid ""
"A back-ed proxy to upload images. You may set a self hosted proxy with " "A back-ed proxy to upload images. You may set a self hosted proxy with "
"Nginx, following my <a href=\"https://2heng.xin/2018/06/06/javascript-upload-" "Nginx, following my <a href=\"https://2heng.xin/2018/06/06/javascript-upload-"
@ -1594,33 +1673,33 @@ msgstr ""
"端显示都需要代理!如果服务器在国外不需要上传代理,此处填写默认值即可:【<a " "端显示都需要代理!如果服务器在国外不需要上传代理,此处填写默认值即可:【<a "
"href=\"https://api.imgur.com/3/image/\">https://api.imgur.com/3/image/</a>】" "href=\"https://api.imgur.com/3/image/\">https://api.imgur.com/3/image/</a>】"
#: options.php:1063 #: options.php:1104
msgid "Enable live search" msgid "Enable live search"
msgstr "启用实时搜索" msgstr "启用实时搜索"
#: options.php:1064 #: options.php:1105
msgid "" msgid ""
"Real-time search in the foreground, call the Rest API to update the cache " "Real-time search in the foreground, call the Rest API to update the cache "
"every hour, you can manually set the cache time in functions.php" "every hour, you can manually set the cache time in api.php"
msgstr "" msgstr ""
"前台实现实时搜索,调用 Rest API 每小时更新一次缓存,可在 functions.php 里手动" "前台实现实时搜索,调用 Rest API 每小时更新一次缓存,可在 api.php 里手动设置缓"
"设置缓存时间" "存时间"
#: options.php:1070 #: options.php:1111
msgid "Include comments in live search" msgid "Include comments in live search"
msgstr "实时搜索包含评论" msgstr "实时搜索包含评论"
#: options.php:1071 #: options.php:1112
msgid "" msgid ""
"Search for comments in real-time search (not recommended if there are too " "Search for comments in real-time search (not recommended if there are too "
"many comments on the site)" "many comments on the site)"
msgstr "在实时搜索中搜索评论(如果网站评论数量太多不建议开启)" msgstr "在实时搜索中搜索评论(如果网站评论数量太多不建议开启)"
#: options.php:1077 #: options.php:1118
msgid "Enable baguetteBox" msgid "Enable baguetteBox"
msgstr "启用 baguetteBox" msgstr "启用 baguetteBox"
#: options.php:1078 #: options.php:1119
msgid "" msgid ""
"Default off<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox" "Default off<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox"
"\">please read wiki</a>" "\">please read wiki</a>"
@ -1628,33 +1707,33 @@ msgstr ""
"默认禁用,<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox\">请阅" "默认禁用,<a href=\"https://github.com/mashirozx/Sakura/wiki/Fancybox\">请阅"
"读说明</a>" "读说明</a>"
#: options.php:1084 #: options.php:1125
msgid "Enable lazyload in posts" msgid "Enable lazyload in posts"
msgstr "文章内图片启用 lazyload" msgstr "文章内图片启用 lazyload"
#: options.php:1091 #: options.php:1132
msgid "lazyload spinner" msgid "lazyload spinner"
msgstr "lazyload 占位图" msgstr "lazyload 占位图"
#: options.php:1092 #: options.php:1133
msgid "The placeholder to display when the image loads, fill in the image url" msgid "The placeholder to display when the image loads, fill in the image url"
msgstr "图片加载时要显示的占位图,填写图片 url" msgstr "图片加载时要显示的占位图,填写图片 url"
#: options.php:1098 #: options.php:1139
msgid "Whether to enable the clipboard copyright" msgid "Whether to enable the clipboard copyright"
msgstr "是否开启剪贴板版权标识" msgstr "是否开启剪贴板版权标识"
#: options.php:1099 #: options.php:1140
msgid "" msgid ""
"Automatically add a copyright to the clipboard when copying more than 30 " "Automatically add a copyright to the clipboard when copying more than 30 "
"bytes, which is enabled by default." "bytes, which is enabled by default."
msgstr "复制超过30个字节时自动向剪贴板添加版权标识默认开启。" msgstr "复制超过30个字节时自动向剪贴板添加版权标识默认开启。"
#: options.php:1105 #: options.php:1146
msgid "Email address prefix" msgid "Email address prefix"
msgstr "发件地址前缀" msgstr "发件地址前缀"
#: options.php:1106 #: options.php:1147
msgid "" msgid ""
"For sending system mail, the sender address displayed in the user's mailbox, " "For sending system mail, the sender address displayed in the user's mailbox, "
"do not use Chinese, the default system email address is bibi@your_domain_name" "do not use Chinese, the default system email address is bibi@your_domain_name"
@ -1662,11 +1741,11 @@ msgstr ""
"用于发送系统邮件,在用户的邮箱中显示的发件人地址,不要使用中文,默认系统邮件" "用于发送系统邮件,在用户的邮箱中显示的发件人地址,不要使用中文,默认系统邮件"
"地址为 bibi@你的域名" "地址为 bibi@你的域名"
#: options.php:1112 #: options.php:1153
msgid "Comments reply notification" msgid "Comments reply notification"
msgstr "邮件回复通知" msgstr "邮件回复通知"
#: options.php:1113 #: options.php:1154
msgid "" msgid ""
"WordPress will use email to notify users when their comments receive a reply " "WordPress will use email to notify users when their comments receive a reply "
"by default. Tick this item allows users to set their own comments reply " "by default. Tick this item allows users to set their own comments reply "
@ -1675,78 +1754,78 @@ msgstr ""
"WordPress默认会使用邮件通知用户评论收到回复开启此项允许用户设置自己的评论收" "WordPress默认会使用邮件通知用户评论收到回复开启此项允许用户设置自己的评论收"
"到回复时是否使用邮件通知" "到回复时是否使用邮件通知"
#: options.php:1119 #: options.php:1160
msgid "Administrator comment notification" msgid "Administrator comment notification"
msgstr "邮件回复通知管理员" msgstr "邮件回复通知管理员"
#: options.php:1120 #: options.php:1161
msgid "" msgid ""
"Whether to use email notification when the administrator's comments receive " "Whether to use email notification when the administrator's comments receive "
"a reply" "a reply"
msgstr "当管理员评论收到回复时是否使用邮件通知" msgstr "当管理员评论收到回复时是否使用邮件通知"
#: options.php:1126 #: options.php:1167
msgid "Enable private comment" msgid "Enable private comment"
msgstr "允许私密评论" msgstr "允许私密评论"
#: options.php:1127 #: options.php:1168
msgid "Allow users to set their own comments to be invisible to others" msgid "Allow users to set their own comments to be invisible to others"
msgstr "允许用户设置自己的评论对其他人不可见" msgstr "允许用户设置自己的评论对其他人不可见"
#: options.php:1133 #: options.php:1174
msgid "Human verification" msgid "Human verification"
msgstr "机器人验证" msgstr "机器人验证"
#: options.php:1134 #: options.php:1175
msgid "Enable human verification" msgid "Enable human verification"
msgstr "开启机器人验证" msgstr "开启机器人验证"
#: options.php:1140 #: options.php:1181
msgid "QQ avatar link encryption" msgid "QQ avatar link encryption"
msgstr "QQ头像链接加密" msgstr "QQ头像链接加密"
#: options.php:1141 #: options.php:1182
msgid "Do not display the user's qq avatar links directly." msgid "Do not display the user's qq avatar links directly."
msgstr "不直接暴露用户QQ头像链接" msgstr "不直接暴露用户QQ头像链接"
#: options.php:1146 #: options.php:1187
msgid "Off (default)" msgid "Off (default)"
msgstr "关闭(默认)" msgstr "关闭(默认)"
#: options.php:1147 #: options.php:1188
msgid "use redirect (general security)" msgid "use redirect (general security)"
msgstr "使用重定向(安全性低)" msgstr "使用重定向(安全性低)"
#: options.php:1148 #: options.php:1189
msgid "fetch data at backend (high security)" msgid "fetch data at backend (high security)"
msgstr "后端获取头像数据(安全性高)" msgstr "后端获取头像数据(安全性高)"
#: options.php:1149 #: options.php:1190
msgid "fetch data at backend (high securityslow)" msgid "fetch data at backend (high securityslow)"
msgstr "后端解析QQ头像接口安全性高" msgstr "后端解析QQ头像接口安全性高"
#: options.php:1153 #: options.php:1194
msgid "Comment UA infomation" msgid "Comment UA infomation"
msgstr "评论UA信息" msgstr "评论UA信息"
#: options.php:1154 #: options.php:1195
msgid "" msgid ""
"Check to enable, display the user's browser, operating system information" "Check to enable, display the user's browser, operating system information"
msgstr "勾选开启,显示用户的浏览器,操作系统信息" msgstr "勾选开启,显示用户的浏览器,操作系统信息"
#: options.php:1160 #: options.php:1201
msgid "Enable disqus" msgid "Enable disqus"
msgstr "开启多说插件支持" msgstr "开启多说插件支持"
#: options.php:1161 #: options.php:1202
msgid "Enable disqus for comment" msgid "Enable disqus for comment"
msgstr "多说已经凉了~~" msgstr "多说已经凉了~~"
#: options.php:1167 #: options.php:1208
msgid "Time Zone adjustment" msgid "Time Zone adjustment"
msgstr "时区调整" msgstr "时区调整"
#: options.php:1168 #: options.php:1209
msgid "" msgid ""
"If the comment has a time difference problem adjust here, fill in an " "If the comment has a time difference problem adjust here, fill in an "
"integer, the calculation method: actual_time = display_error_time - " "integer, the calculation method: actual_time = display_error_time - "
@ -1806,6 +1885,10 @@ msgstr ""
msgid "Attribution-NonCommercial-ShareAlike 4.0 International" msgid "Attribution-NonCommercial-ShareAlike 4.0 International"
msgstr "知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议" msgstr "知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议"
#: user/page-bangumi.php:30
msgid "Please fill in the Bilibili UID in Sakura Options."
msgstr "请在后台设置填写 Bilibili UID 后继续。"
#: user/page-login.php:18 #: user/page-login.php:18
msgid "Remember Me" msgid "Remember Me"
msgstr "记住我" msgstr "记住我"
@ -1870,7 +1953,11 @@ msgstr "拖动滑块验证"
msgid "Sign up" msgid "Sign up"
msgstr "注 册" msgstr "注 册"
#: user/page-register.php:92 #: user/page-register.php:90
msgid "Success! Redirecting......"
msgstr "注册成功!正在跳转......"
#: user/page-register.php:95
msgid "Registration is not open yet." msgid "Registration is not open yet."
msgstr "暂未开放注册。" msgstr "暂未开放注册。"

View File

@ -182,7 +182,7 @@ function optionsframework_options()
'name' => __('Favicon', 'sakura'), 'name' => __('Favicon', 'sakura'),
'desc' => __('It is the small logo on the browser tab, fill in the url', 'sakura'), /*就是浏览器标签栏上那个小 logo填写url*/ 'desc' => __('It is the small logo on the browser tab, fill in the url', 'sakura'), /*就是浏览器标签栏上那个小 logo填写url*/
'id' => 'favicon_link', 'id' => 'favicon_link',
'std' => '/wp-content/themes/Sakura/images/favicon.ico', 'std' => get_template_directory_uri().'/images/favicon.ico',
'type' => 'text'); 'type' => 'text');
$options[] = array( $options[] = array(
@ -923,11 +923,33 @@ function optionsframework_options()
$options[] = array( $options[] = array(
'name' => __('Footer float music player', 'sakura'), /*页脚悬浮播放器*/ 'name' => __('Footer float music player', 'sakura'), /*页脚悬浮播放器*/
'desc' => __('If you don\'t need the player just leave it blank.Fill in the "song list" ID of Netease Cloud Music, eg: https://music.163.com/#/playlist?id=2288037900 The ID is 2288037900', 'sakura'), /*如果不需要播放器留空即可。填写网易云音乐的「歌单」IDeghttps://music.163.com/#/playlist?id=2288037900的ID是2288037900*/ 'desc' => __('Choose which platform you\'ll use.', 'sakura'),
'id' => 'playlist_id', 'id' => 'aplayer_server',
'std' => "netease",
'type' => "select",
'options' => array(
'netease' => __('Netease Cloud Music (default)', 'sakura'),
'xiami' => __('Xiami Music', 'sakura'),
'kugou' => __('KuGou Music', 'sakura'),
'baidu' => __('Baidu Music', 'sakura'),
'tencent' => __('QQ Music (may fail) ', 'sakura'),
'off' => __('Off', 'sakura'),
));
$options[] = array(
'name' => __('Song list ID', 'sakura'),
'desc' => __('Fill in the "song list" ID, eg: https://music.163.com/#/playlist?id=2288037900 The ID is 2288037900', 'sakura'),
'id' => 'aplayer_playlistid',
'std' => '2288037900', 'std' => '2288037900',
'type' => 'text'); 'type' => 'text');
$options[] = array(
'name' => __('Netease Cloud Music cookie', 'sakura'),
'desc' => __('For Netease Cloud Music, fill in your vip account\'s cookies if you want to play special tracks.<b>If you don\'t know what does mean, left it blank.</b>', 'sakura'),
'id' => 'aplayer_cookie',
'std' => '',
'type' => 'textarea');
$options[] = array( $options[] = array(
'name' => __('Version Control', 'sakura'), /*版本控制*/ 'name' => __('Version Control', 'sakura'), /*版本控制*/
'desc' => __('Used to update frontend cookies and browser caches, any string can be used', 'sakura'), /*用于更新前端 cookie 及浏览器缓存,可使用任意字符串*/ 'desc' => __('Used to update frontend cookies and browser caches, any string can be used', 'sakura'), /*用于更新前端 cookie 及浏览器缓存,可使用任意字符串*/
@ -969,7 +991,19 @@ function optionsframework_options()
'id' => 'notice_title', 'id' => 'notice_title',
'std' => '', 'std' => '',
'type' => 'text'); 'type' => 'text');
$options[] = array(
'name' => __('Bilibili UID', 'sakura'), /*bilibiliUID*/
'desc' => __('Fill in your UID, eg.https://space.bilibili.com/13972644/, only fill in with the number part.', 'sakura'),
'id' => 'bilibili_id',
'std' => '13972644',
'type' => 'text');
$options[] = array(
'name' => __('Bilibili Cookie', 'sakura'), /*Bilibili Cookie*/
'desc' => __('Fill in your Cookies, go to your bilibili homepage, you can get cookies in brownser network pannel with pressing F12. If left this blank, you\'ll not get the progress.', 'sakura'),
'id' => 'bilibili_cookie',
'std' => 'LIVE_BUVID=',
'type' => 'textarea');
$options[] = array( $options[] = array(
'name' => __('The categories of articles that don\'t not show on homepage', 'sakura'), /*首页不显示的分类文章*/ 'name' => __('The categories of articles that don\'t not show on homepage', 'sakura'), /*首页不显示的分类文章*/
'desc' => __('Fill in category ID, multiple IDs are divided by a comma ","', 'sakura'), /*填写分类ID多个用英文“ , ”分开*/ 'desc' => __('Fill in category ID, multiple IDs are divided by a comma ","', 'sakura'), /*填写分类ID多个用英文“ , ”分开*/
@ -1006,6 +1040,13 @@ function optionsframework_options()
'type_4' => __('23k Views (chinese)', 'sakura'), /*23k 次访问(中式)*/ 'type_4' => __('23k Views (chinese)', 'sakura'), /*23k 次访问(中式)*/
)); ));
$options[] = array(
'name' => __('Gravatar avatar proxy', 'sakura'),
'desc' => __('A front-ed proxy for Gravatar, eg. gravatar.2heng.xin/avatar . Leave it blank if you do not need.', 'sakura'),
'id' => 'gravatar_proxy',
'std' => "gravatar.2heng.xin/avatar",
'type' => "text");
$options[] = array( $options[] = array(
'name' => __('Comment image upload API', 'sakura'), /*评论图片上传接口*/ 'name' => __('Comment image upload API', 'sakura'), /*评论图片上传接口*/
'id' => 'img_upload_api', 'id' => 'img_upload_api',
@ -1061,7 +1102,7 @@ function optionsframework_options()
$options[] = array( $options[] = array(
'name' => __('Enable live search', 'sakura'), /*启用实时搜索*/ 'name' => __('Enable live search', 'sakura'), /*启用实时搜索*/
'desc' => __('Real-time search in the foreground, call the Rest API to update the cache every hour, you can manually set the cache time in functions.php', 'sakura'), /*前台实现实时搜索,调用 Rest API 每小时更新一次缓存,可在 functions.php 里手动设置缓存时间*/ 'desc' => __('Real-time search in the foreground, call the Rest API to update the cache every hour, you can manually set the cache time in api.php', 'sakura'), /*前台实现实时搜索,调用 Rest API 每小时更新一次缓存,可在 functions.php 里手动设置缓存时间*/
'id' => 'live_search', 'id' => 'live_search',
'std' => '0', 'std' => '0',
'type' => 'checkbox'); 'type' => 'checkbox');

255
style.css
View File

@ -5,7 +5,7 @@ Theme URI: https://github.com/mashirozx/Sakura/
Author: Mashiro, Spirit, Louie, Fuzzz Author: Mashiro, Spirit, Louie, Fuzzz
Author URI: http://2heng.xin Author URI: http://2heng.xin
Description: A wonderful branch of theme Akina Description: A wonderful branch of theme Akina
Version: 3.3.7 Version: 3.3.8
License: GNU General Public License v2 or later License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: sakura Text Domain: sakura
@ -1283,7 +1283,7 @@ a:hover {
padding: 0 10px; padding: 0 10px;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
background-color: rgba(255, 255, 255, .8) background-color: #fff
} }
.post-list { .post-list {
@ -1325,7 +1325,8 @@ a:hover {
border-radius: 50%; border-radius: 50%;
padding: 2px; padding: 2px;
border: 1px solid #DADADA; border: 1px solid #DADADA;
position: relative position: relative;
object-fit: cover
} }
.feature :hover .overlay i { .feature :hover .overlay i {
@ -1708,6 +1709,10 @@ i.iconfont.hotpost {
background: #FBFBFB background: #FBFBFB
} }
body.dark .s-content{
background: unset;
}
.s-time i { .s-time i {
font-size: 13px; font-size: 13px;
margin-right: 5px margin-right: 5px
@ -1876,21 +1881,10 @@ h1.page-title.mb- {
text-align: center text-align: center
} }
@media screen and (max-width:860px) { #moblieGoTop,#moblieDarkLight {
.cd-top { visibility: hidden;
display: none;
height: 60px;
width: 50px
}
.cd-top span {
height: 10px;
width: 50px
}
}
#moblieGoTop {
position: fixed; position: fixed;
bottom: 10px; bottom: 60px;
right: 10px; right: 10px;
z-index: 99; z-index: 99;
border: 0; border: 0;
@ -1905,11 +1899,29 @@ h1.page-title.mb- {
transform: scale(0); transform: scale(0);
transition:transform .3s transition:transform .3s
} }
#moblieGoTop:hover { #moblieGoTop:hover,#moblieDarkLight:hover {
background-color: #fff; background-color: #fff;
opacity: .8 opacity: .8
} }
#moblieDarkLight{
bottom: 10px;
}
@media screen and (max-width:860px) {
.cd-top {
display: none;
height: 60px;
width: 50px
}
.cd-top span {
height: 10px;
width: 50px
}
#moblieGoTop,#moblieDarkLight{
visibility: visible;
}
}
.post-footer { .post-footer {
padding: 20px 0; padding: 20px 0;
border-bottom: 1px dashed #ddd; border-bottom: 1px dashed #ddd;
@ -3866,6 +3878,10 @@ li.feature-2 {
z-index: -1 z-index: -1
} }
@supports (-webkit-touch-callout: none) {
#centerbg: { background-attachment: scroll !important; }
}
@media (max-width:860px) { @media (max-width:860px) {
#centerbg { #centerbg {
height: 300px; height: 300px;
@ -4364,7 +4380,9 @@ i.iconfont.js-toggle-search.iconsearch {
margin-top: -3px; margin-top: -3px;
line-height: unset; line-height: unset;
} }
body.dark .ins-section .fa{
color: #ccc;
}
.ins-section .ins-section-header,.ins-section .ins-search-item { .ins-section .ins-section-header,.ins-section .ins-search-item {
padding: 8px 15px; padding: 8px 15px;
cursor: url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/cursor/ayuda.cur),auto; cursor: url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/cursor/ayuda.cur),auto;
@ -5009,7 +5027,7 @@ i.iconfont.down {
color: #ADADAD color: #ADADAD
} }
#pagination span { #pagination span,#bangumi-pagination span {
color: #989898; color: #989898;
font-size: 15px font-size: 15px
} }
@ -5019,7 +5037,7 @@ i.iconfont.down {
color: orange color: orange
} }
#pagination .loading { #pagination .loading,#bangumi-pagination .loading {
background: url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/images/wordpress-rotating-ball-o.svg); background: url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/images/wordpress-rotating-ball-o.svg);
background-position: center; background-position: center;
background-repeat: no-repeat; background-repeat: no-repeat;
@ -5217,7 +5235,7 @@ i.iconfont.down {
@media (max-width:860px) { @media (max-width:860px) {
#main-container { #main-container {
transition-duration: .5s; transition: background,transform .5s !important;
position: relative; position: relative;
overflow: hidden; overflow: hidden;
z-index: 2 z-index: 2
@ -5304,7 +5322,7 @@ i.iconfont.down {
top: 8px top: 8px
} }
.openNav.open .icon { .openNav.open .icon {
background-color: transparent background-color: transparent !important
} }
.openNav.open .icon:after, .openNav.open .icon:after,
.openNav.open .icon:before { .openNav.open .icon:before {
@ -5810,7 +5828,8 @@ i.iconfont.down {
} }
.header-user-avatar:hover .header-user-menu { .header-user-avatar:hover .header-user-menu {
display: block display: block;
background: #fff;
} }
.header-user-menu { .header-user-menu {
@ -5841,7 +5860,6 @@ i.iconfont.down {
.herder-user-name { .herder-user-name {
font-size: 12px; font-size: 12px;
background: #fff;
padding: 10px 10px; padding: 10px 10px;
border-radius: 4px 4px 0 0 border-radius: 4px 4px 0 0
} }
@ -5857,7 +5875,6 @@ i.iconfont.down {
.header-user-menu .user-menu-option { .header-user-menu .user-menu-option {
padding: 5px 0; padding: 5px 0;
background: #fff;
border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px;
width: 130px width: 130px
} }
@ -5877,6 +5894,11 @@ i.iconfont.down {
background-color: #f1f1f1 background-color: #f1f1f1
} }
body.dark .user-menu-option a:hover {
color: #3daee9;
background-color: #232629
}
.no-logged { .no-logged {
font-size: 13px; font-size: 13px;
padding: 15px 10px; padding: 15px 10px;
@ -5886,7 +5908,7 @@ i.iconfont.down {
.no-logged a { .no-logged a {
display: initial; display: initial;
color: #69d2e7; color: #69d2e7 !important;
font-size: 14px; font-size: 14px;
padding: 0 5px; padding: 0 5px;
text-decoration: underline text-decoration: underline
@ -8277,6 +8299,8 @@ td.hljs-ln-numbers {
--widthB: calc(var(--widthA) - 30px); --widthB: calc(var(--widthA) - 30px);
height: var(--widthB); height: var(--widthB);
min-height: 99%; min-height: 99%;
white-space: pre-wrap;
word-wrap: break-word;
overflow-y: hidden; overflow-y: hidden;
overflow-x: auto; overflow-x: auto;
height: auto height: auto
@ -8624,3 +8648,180 @@ h1[id*=toc-head]::before,h2[id*=toc-head]::before,h3[id*=toc-head]::before,h4[id
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.bangumi {
margin-top: 40px;
}
.bangumi .row {
display: flex;
margin: 0 -10px -20px;
flex-wrap: wrap;
}
.bangumi .column {
max-width: 50%;
flex: 0 0 50%;
margin-bottom: 30px;
padding: 0 15px;
max-width: 100%;
flex: 0 0 100%;
transition: .5s;
}
.bangumi-item {
height: 0;
color: #fff;
display: block;
overflow: hidden;
text-align: center;
position: relative;
padding-bottom: 130%;
box-shadow: 0 0 10px rgba(0, 0, 0, .1), 0 5px 20px rgba(0, 0, 0, .2);
}
.bangumi-item:hover {
color: #fff;
}
.bangumi-item img {
width: 100%;
user-select: none;
object-fit: cover;
transition: filter 2s;
}
.bangumi-item .bangumi-info {
height: 30%;
top: 0;
left: 0;
right: 0;
padding: 10px;
position: absolute;
background: rgba(0, 0, 0, .5);
transition: transform 1s;
transform: translateY(250%);
}
.bangumi-title {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-top: 0;
}
.bangumi-summary {
height: 65%;
white-space: normal;
display: none;
font-weight: bold;
}
.bangumi-status-bar {
top: 0;
bottom: 0;
max-width: 100%;
position: absolute;
background: #dc143c;
}
.bangumi-status, .bangumi-status p {
position: relative;
}
.bangumi-status {
background: rgba(0, 0, 0, .6);
}
@media screen and (min-width: 400px) {
.bangumi .column {
max-width: 50%;
flex: 0 0 50%;
}
.bangumi-item .bangumi-info{
height: 50%;
transform: translateY(140%);
}
.bangumi-title {
height: 20%;
}
}
@media screen and (min-width: 600px) {
.bangumi .column {
max-width: 33.3333%;
flex: 0 0 33.3333%;
}
.bangumi-title {
height: 30%;
}
.bangumi-item .bangumi-info{
height: 45%;
transform: translateY(140%);
}
}
@media screen and (min-width: 900px) {
.bangumi .column {
max-width: 25%;
flex: 0 0 25%;
}
.bangumi-item .bangumi-info{
height: 100%;
transform: translateY(85%);
}
.bangumi-item:hover .bangumi-info {
transform: translateY(0);
}
.bangumi-item:hover img{
filter: blur(3px);
}
body.dark .bangumi-item:hover img{
filter: brightness(0.8) blur(3px);
}
.bangumi-title {
height: 15%;
}
.bangumi-summary{
display: block;
}
.bangumi-status {
height: 10%;
}
}
@media screen and (min-width: 1200px) {
.bangumi-item .bangumi-info{
height: 75%;
transform: translateY(115%);
}
.bangumi-item:hover .bangumi-info {
transform: translateY(35%);
}
.bangumi-title {
height: 10%;
}
}
#bangumi-pagination {
width: 100%;
margin-top: 80px;
padding: 20px 0;
font-size: 36px;
text-align: center;
}
.bangumi-next{
font-family: sans-serif;
color: #e67474;
position: relative;
padding: 13px 35px;
overflow: hidden;
}
.bangumi-next:before {
content: ' ';
background-color: pink;
bottom: 0;
left: 0;
width: 100%;
height: 0;
position: absolute;
transition: all 5s;
z-index: -1;
}
.bangumi-next.loading:before{
display: none !important;
}
.bangumi-next:hover:before {
height: 100%;
}
.bangumi-next i {
color: orange;
}

View File

@ -0,0 +1,38 @@
<?php
/**
Template Name: Bangumi
*/
get_header();
?>
<meta name="referrer" content="same-origin">
<style>
#content,.comments,.site-footer{max-width:1200px;}
.comments{display: none}
</style>
</head>
<?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 <?php post_class("post-item"); ?>>
<?php the_content(); ?>
<section class="bangumi">
<?php if (akina_option('bilibili_id') ):?>
<div class="row">
<?php
$bgm = new \Sakura\API\Bilibili();
echo $bgm->get_bgm_items();
?>
<?php else: ?>
<div class="row">
<p> <?php _e("Please fill in the Bilibili UID in Sakura Options.","sakura"); ?></p>
</div>
<?php endif; ?>
</section>
</article>
<?php endwhile; ?>
<?php
get_footer();

View File

@ -86,7 +86,10 @@ if( !empty($_POST['register_reg']) ) {
<?php }else{ <?php }else{
$loadurl = akina_option('exlogin_url') ? akina_option('exlogin_url') : get_bloginfo('url'); $loadurl = akina_option('exlogin_url') ? akina_option('exlogin_url') : get_bloginfo('url');
?> ?>
<script>//window.location.href='<?php echo $loadurl; ?>';</script> <div class="ex-register-title">
<h3><?php _e("Success! Redirecting......","sakura")/*注册成功!正在跳转...*/?></h3>
</div>
<script>window.location.href='<?php echo $loadurl; ?>';</script>
<?php } ?> <?php } ?>
<?php else : ?> <?php else : ?>
<div class="register-close"><p><?php _e("Registration is not open yet.","sakura")/*暂未开放注册。*/?></p></div> <div class="register-close"><p><?php _e("Registration is not open yet.","sakura")/*暂未开放注册。*/?></p></div>