fresh start

This commit is contained in:
sagrrecn
2026-02-19 13:13:03 +08:00
commit 9bbf98d0b9
322 changed files with 15696 additions and 0 deletions

206
footer.php Normal file
View File

@@ -0,0 +1,206 @@
<?php
// 处理AI摘要保存
if (isset($_POST['save_ai_summary']) && $_POST['save_ai_summary'] == '1') {
$postId = intval($_POST['post_id']);
$summary = trim($_POST['summary_content']);
if ($postId > 0 && !empty($summary)) {
$db = Typecho_Db::get();
// 检查字段是否存在
$field = $db->fetchRow($db->select()
->from('table.fields')
->where('cid = ?', $postId)
->where('name = ?', 'description'));
if ($field) {
// 更新字段
$db->query($db->update('table.fields')
->rows(array('str_value' => $summary))
->where('cid = ?', $postId)
->where('name = ?', 'description'));
} else {
// 插入新字段
$db->query($db->insert('table.fields')
->rows(array(
'cid' => $postId,
'name' => 'description',
'type' => 'str',
'str_value' => $summary,
'int_value' => 0
)));
}
// 注意这里不重定向因为前端使用AJAX
}
}
?>
<?php if (!defined("__TYPECHO_ROOT_DIR__")) {exit();} ?>
<?php $this->footer(); ?>
<div class="flex grow flex-col justify-between top">
<ul class="flex flex-col flex-wrap content-center gap-y-2 ">
<li class="relative nav-li">
<button onclick="jasmine.switchDark()" title="日夜模式" id="theme-toggle">
<iconify-icon id="theme-icon"
class="rounded px-2 py-1 text-2xl jasmine-primary-bg-hover btop"></iconify-icon>
</button>
</li>
<?php if (class_exists('TocPlugin_Plugin')): ?>
<?php echo TocPlugin_Plugin::outputNavigationButtons(); ?>
<?php endif; ?>
</ul>
</div>
<script>
<?php $this->options->customScript(); ?>
</script>
<!-- OwO 表情 -->
<script src="<?php $this->options->themeUrl('/owo/OwO.min.js'); ?>"></script>
<!--图片灯箱JS 2024.2.3-->
<script src="https://qcm.xgsd.cc/js/view-image.min.js"></script>
<script>window.ViewImage && ViewImage.init('.markdown-body img');</script>
<script>
<?php $this->options->customScript(); ?>
</script>
<?php if($this->fields->zhaiyao):?>
<?php if ($this->is("post")): ?>
<link rel="stylesheet" href="https://www.shitoucuo.com/usr/themes/sagrre/assets/dist/tianli_gpt.css">
<script>
let tianliGPT_wordLimit = 5000;
let tianliGPT_postSelector = '.markdown-body';
let tianliGPT_key = 'b1b2e6754734b2ad1e1b64e75b1c3956eb15';
// 标记是否已保存,防止重复保存
let aiSummarySaved = false;
// 获取完整的AI摘要内容
function getFullAISummary() {
const element = document.querySelector('.tianliGPT-explanation');
if (element && element.textContent && element.textContent.length > 20) {
return element.textContent.trim();
}
return null;
}
// 保存到字段使用AJAX不刷新页面
function saveToDescription(postId, summary) {
if (aiSummarySaved) return;
console.log('保存AI摘要长度:', summary.length);
// 使用FormData发送请求
const formData = new FormData();
formData.append('save_ai_summary', '1');
formData.append('post_id', postId);
formData.append('summary_content', summary);
fetch('', {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(() => {
console.log('AI摘要保存成功');
aiSummarySaved = true;
})
.catch(error => {
console.log('保存完成');
});
}
// 检查并保存AI摘要
function checkAndSaveAISummary() {
if (aiSummarySaved) return true;
const postId = <?php echo $this->cid; ?>;
const summary = getFullAISummary();
if (summary && summary.length > 50) { // 确保是完整的摘要
console.log('找到完整AI摘要长度:', summary.length);
saveToDescription(postId, summary);
return true;
}
return false;
}
// 智能监听AI摘要生成
function initAISummarySaver() {
// 先等待一段时间让AI摘要完全生成
setTimeout(() => {
// 第一次检查
if (!checkAndSaveAISummary()) {
// 设置一个较长的检查间隔,避免频繁检查
let checkCount = 0;
const maxChecks = 5;
const checkInterval = setInterval(() => {
checkCount++;
if (checkAndSaveAISummary() || checkCount >= maxChecks) {
clearInterval(checkInterval);
}
}, 3000); // 每3秒检查一次
}
}, 8000); // 等待8秒后开始检查给AI摘要足够时间生成
// 监听DOM变化但只在AI摘要区域变化时处理
const observer = new MutationObserver((mutations) => {
if (aiSummarySaved) {
observer.disconnect();
return;
}
for (let mutation of mutations) {
for (let node of mutation.addedNodes) {
if (node.nodeType === 1) {
// 只有当新增的元素包含AI摘要时才处理
if (node.classList && node.classList.contains('tianliGPT-explanation')) {
console.log('检测到AI摘要元素变化');
setTimeout(() => checkAndSaveAISummary(), 1000);
}
}
}
}
});
// 只观察AI摘要区域的变化
const aiContainer = document.querySelector('.tianli-gpt');
if (aiContainer) {
observer.observe(aiContainer, {
childList: true,
subtree: true,
characterData: true
});
}
}
// 页面加载完成后启动
document.addEventListener('DOMContentLoaded', function() {
// 延迟启动避免干扰AI摘要的正常生成
setTimeout(initAISummarySaver, 2000);
});
// 如果页面已经加载完成
if (document.readyState === 'complete') {
setTimeout(initAISummarySaver, 2000);
}
</script>
<script src="https://www.shitoucuo.com/usr/themes/sagrre/assets/dist/tianli_gpt.min.js"></script>
<?php endif; ?>
<?php endif; ?>
<script>
/*评论表情配置*/
var OwO_demo = new OwO({
target: document.getElementsByClassName('OwO-textarea')[0],
api: '/usr/themes/sagrre/owo/OwO.json',
position: 'down',
width: '66vw',
maxHeight: '250px'
});
</script>