创建主题修改成从现有主题作为模板。
This commit is contained in:
+31
-7
@@ -1135,11 +1135,33 @@ function showThemeMessage(message, type = 'info') {
|
||||
}
|
||||
|
||||
// 显示创建主题弹窗
|
||||
function showCreateThemeModal() {
|
||||
async function showCreateThemeModal() {
|
||||
// 打开创建主题模态框并动态加载现有主题作为模板选项
|
||||
document.getElementById('theme-modal').classList.remove('hidden');
|
||||
document.getElementById('new-theme-name').value = '';
|
||||
document.getElementById('theme-template').value = 'default';
|
||||
document.getElementById('create-css').checked = true;
|
||||
const themeSelect = document.getElementById('theme-template');
|
||||
try {
|
||||
// 获取所有可用主题
|
||||
const res = await fetch(`${API_BASE}/themes`, {
|
||||
headers: getHeaders()
|
||||
});
|
||||
const themesData = await res.json();
|
||||
themeSelect.innerHTML = '';
|
||||
// 填充下拉列表
|
||||
themesData.themes.forEach(theme => {
|
||||
const option = document.createElement('option');
|
||||
option.value = theme;
|
||||
option.textContent = theme;
|
||||
if (theme === currentTheme) {
|
||||
option.selected = true;
|
||||
}
|
||||
themeSelect.appendChild(option);
|
||||
});
|
||||
} catch (err) {
|
||||
themeSelect.innerHTML = '<option value="">加载失败</option>';
|
||||
}
|
||||
const createCssEl = document.getElementById('theme-template');
|
||||
if (createCssEl) createCssEl.checked = true;
|
||||
}
|
||||
|
||||
// 隐藏创建主题弹窗
|
||||
@@ -1160,13 +1182,16 @@ async function handleCreateTheme(e) {
|
||||
|
||||
const themeName = document.getElementById('new-theme-name').value.trim();
|
||||
const template = document.getElementById('theme-template').value;
|
||||
const createCSS = document.getElementById('create-css').checked;
|
||||
|
||||
if (!themeName) {
|
||||
showThemeMessage('请输入主题名称', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!template) {
|
||||
showThemeMessage('请选择一个已有主题作为模板', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(`${API_BASE}/themes/create`, {
|
||||
method: 'POST',
|
||||
@@ -1176,8 +1201,7 @@ async function handleCreateTheme(e) {
|
||||
},
|
||||
body: JSON.stringify({
|
||||
name: themeName,
|
||||
template: template,
|
||||
create_css: createCSS
|
||||
template: template
|
||||
})
|
||||
});
|
||||
|
||||
|
||||
+2
-10
@@ -348,8 +348,8 @@
|
||||
<select id="theme-select" class="theme-selector">
|
||||
<option value="">加载中...</option>
|
||||
</select>
|
||||
<button class="btn-primary" onclick="switchTheme()">切换主题</button>
|
||||
</div>
|
||||
<button class="btn-primary" onclick="switchTheme()">切换主题</button>
|
||||
<div id="theme-message" class="theme-message"></div>
|
||||
</div>
|
||||
<div class="theme-list" id="theme-list">
|
||||
@@ -467,16 +467,8 @@
|
||||
<div class="form-group">
|
||||
<label>基于模板创建</label>
|
||||
<select id="theme-template">
|
||||
<option value="default">default(默认主题)</option>
|
||||
<option value="minimal">minimal(极简主题)</option>
|
||||
<option value="blank">blank(空白主题)</option>
|
||||
<option value="">加载中...</option>
|
||||
</select>
|
||||
<small>选择新主题的初始模板</small>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>
|
||||
<input type="checkbox" id="create-css" checked> 创建样式文件
|
||||
</label>
|
||||
</div>
|
||||
<div class="modal-actions">
|
||||
<button type="button" class="btn-secondary" onclick="hideThemeModal()">取消</button>
|
||||
|
||||
Reference in New Issue
Block a user