@@ -4173,9 +4189,19 @@ function renderFolderList(type) {
// if (section) section.classList.add('expanded'); // 已移除
container.innerHTML = folders.map(f => `
-
- ${f.name} (${f.item_count || 0})
-
+
`).join('');
}
@@ -4202,16 +4228,35 @@ async function showNewFolderModal(type) {
if (!checkOnlineBeforeAction('新建文件夹')) return;
document.getElementById('newFolderType').value = type;
+ document.getElementById('editFolderId').value = '';
document.getElementById('newFolderName').value = '';
const typeLabels = { text: '📝 文本', link: '🔗 链接', column: '📰 专栏', todo: '✅ 待办' };
document.getElementById('newFolderTypeName').value = typeLabels[type] || type;
+ document.getElementById('folderModalTitle').innerHTML = '
新建文件夹';
+ document.getElementById('folderSaveBtnText').textContent = '创建';
+ document.getElementById('folderTypeRow').style.display = 'block';
+
new bootstrap.Modal(document.getElementById('newFolderModal')).show();
}
-async function createFolder() {
- const type = document.getElementById('newFolderType').value;
+// 显示编辑文件夹模态框
+function showEditFolderModal(folderId, folderName) {
+ document.getElementById('editFolderId').value = folderId;
+ document.getElementById('newFolderName').value = folderName;
+ document.getElementById('newFolderType').value = '';
+
+ document.getElementById('folderModalTitle').innerHTML = '
重命名文件夹';
+ document.getElementById('folderSaveBtnText').textContent = '保存';
+ document.getElementById('folderTypeRow').style.display = 'none';
+
+ new bootstrap.Modal(document.getElementById('newFolderModal')).show();
+}
+
+// 保存文件夹(创建或编辑)
+async function saveFolder() {
+ const editId = document.getElementById('editFolderId').value;
const name = document.getElementById('newFolderName').value.trim();
if (!name) {
@@ -4219,20 +4264,66 @@ async function createFolder() {
return;
}
- const res = await fetch(`${API_BASE}/folders`, {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ name, type })
- });
+ // 离线检查
+ if (!checkOnlineBeforeAction(editId ? '重命名文件夹' : '新建文件夹')) return;
+ if (editId) {
+ // 编辑
+ const res = await fetch(`${API_BASE}/folders/${editId}`, {
+ method: 'PUT',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ name })
+ });
+ const data = await res.json();
+
+ if (data.success) {
+ bootstrap.Modal.getInstance(document.getElementById('newFolderModal')).hide();
+ loadFolders();
+ } else {
+ alert('重命名失败: ' + data.error);
+ }
+ } else {
+ // 创建
+ const type = document.getElementById('newFolderType').value;
+ const res = await fetch(`${API_BASE}/folders`, {
+ method: 'POST',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ name, type })
+ });
+ const data = await res.json();
+
+ if (data.success) {
+ bootstrap.Modal.getInstance(document.getElementById('newFolderModal')).hide();
+ loadFolders();
+ loadStats();
+ } else {
+ alert('创建失败: ' + data.error);
+ }
+ }
+}
+
+// 删除文件夹确认
+async function deleteFolderConfirm(folderId, folderName) {
+ // 离线检查
+ if (!checkOnlineBeforeAction('删除文件夹')) return;
+
+ if (!confirm(`确认删除文件夹"${folderName}"?\n文件夹内的数据将移到未分类。`)) return;
+
+ const res = await fetch(`${API_BASE}/folders/${folderId}?move_to_root=1`, {
+ method: 'DELETE'
+ });
const data = await res.json();
if (data.success) {
- bootstrap.Modal.getInstance(document.getElementById('newFolderModal')).hide();
loadFolders();
loadStats();
+ // 如果当前正在过滤该文件夹,返回首页
+ if (currentFilter.folder_id === folderId) {
+ currentFilter.folder_id = null;
+ loadItems(1);
+ }
} else {
- alert('创建失败: ' + data.error);
+ alert('删除失败: ' + data.error);
}
}