fix: 为edit页面添加获取新闻按钮
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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 %}
|
||||||
|
|||||||
Reference in New Issue
Block a user