fix: 为edit页面添加获取新闻按钮

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jowe
2026-03-13 22:19:42 +08:00
parent edbc4288f9
commit de55283b70

View File

@@ -55,6 +55,31 @@
border: 1px solid rgba(239, 68, 68, 0.3); border: 1px solid rgba(239, 68, 68, 0.3);
color: #f87171; color: #f87171;
} }
.fetch-news-btn {
margin-top: 10px;
margin-bottom: 15px;
background-color: #e6a23c;
color: white;
}
.fetch-news-btn:hover {
background-color: #cf9236;
}
.news-status {
margin-top: 10px;
padding: 10px;
border-radius: 8px;
display: none;
}
.news-status.success {
background-color: rgba(34, 197, 94, 0.1);
border: 1px solid rgba(34, 197, 94, 0.3);
color: #4ade80;
}
.news-status.error {
background-color: rgba(239, 68, 68, 0.1);
border: 1px solid rgba(239, 68, 68, 0.3);
color: #f87171;
}
.auto-fetch-btn .loading-icon, .generate-tags-btn .loading-icon { .auto-fetch-btn .loading-icon, .generate-tags-btn .loading-icon {
display: none; display: none;
} }
@@ -658,6 +683,79 @@ document.addEventListener('DOMContentLoaded', function() {
featuresStatusDiv.style.display = 'block'; featuresStatusDiv.style.display = 'block';
} }
} }
// 在 News Keywords 字段后添加"获取新闻"按钮
const newsKeywordsField = document.querySelector('input[name="news_keywords"]');
if (newsKeywordsField) {
// 检查是否已经添加过按钮
if (document.querySelector('.fetch-news-btn')) {
return;
}
// 创建获取新闻按钮
const fetchNewsBtn = document.createElement('button');
fetchNewsBtn.type = 'button';
fetchNewsBtn.className = 'btn fetch-news-btn';
fetchNewsBtn.innerHTML = '<span class="normal-icon">📰</span><span class="loading-icon">↻</span> 手动获取新闻';
const newsStatusDiv = document.createElement('div');
newsStatusDiv.className = 'news-status';
newsKeywordsField.parentNode.appendChild(fetchNewsBtn);
newsKeywordsField.parentNode.appendChild(newsStatusDiv);
// 从URL中获取网站code编辑模式下URL包含site_id
let siteCode = '';
const codeField = document.querySelector('input[name="code"]');
if (codeField) {
siteCode = codeField.value;
}
fetchNewsBtn.addEventListener('click', function() {
if (!siteCode) {
showNewsStatus('请先保存网站', 'error');
return;
}
// 显示加载状态
fetchNewsBtn.disabled = true;
fetchNewsBtn.classList.add('loading');
fetchNewsBtn.innerHTML = '<span class="loading-icon">↻</span> 获取中...';
newsStatusDiv.style.display = 'none';
// 调用后台获取新闻API
fetch('/api/admin/fetch-news/' + siteCode, {
method: 'POST',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
}
})
.then(response => response.json())
.then(data => {
if (data.success) {
showNewsStatus('✓ ' + data.message, 'success');
} else {
showNewsStatus('✗ ' + (data.error || '获取失败'), 'error');
}
})
.catch(error => {
console.error('Error:', error);
showNewsStatus('✗ 网络请求失败', 'error');
})
.finally(() => {
fetchNewsBtn.disabled = false;
fetchNewsBtn.classList.remove('loading');
fetchNewsBtn.innerHTML = '<span class="normal-icon">📰</span><span class="loading-icon">↻</span> 手动获取新闻';
});
});
function showNewsStatus(message, type) {
newsStatusDiv.textContent = message;
newsStatusDiv.className = 'news-status ' + type;
newsStatusDiv.style.display = 'block';
}
}
}); });
</script> </script>
{% endblock %} {% endblock %}