mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-07-10 14:28:43 +02:00
Add files via upload
This commit is contained in:
@@ -20223,9 +20223,66 @@ button.chat-files-dropdown-item:hover:not(:disabled) {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 文件管理:重命名 / 新建文件夹 — 紧凑表单弹窗,无全局紫色标题条 */
|
||||||
|
.chat-files-form-modal {
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 24px 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-files-form-modal-content {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 420px;
|
||||||
|
margin: 0;
|
||||||
|
border-radius: 12px;
|
||||||
|
box-shadow:
|
||||||
|
0 16px 48px rgba(15, 23, 42, 0.14),
|
||||||
|
0 4px 12px rgba(15, 23, 42, 0.06);
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-files-form-modal-header {
|
||||||
|
padding: 18px 24px !important;
|
||||||
|
border-bottom: 1px solid var(--border-color) !important;
|
||||||
|
background: var(--bg-primary) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-files-form-modal-header::after {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-files-form-modal-header h2 {
|
||||||
|
font-size: 1.0625rem !important;
|
||||||
|
font-weight: 600 !important;
|
||||||
|
color: var(--text-primary) !important;
|
||||||
|
background: none !important;
|
||||||
|
-webkit-background-clip: unset !important;
|
||||||
|
-webkit-text-fill-color: var(--text-primary) !important;
|
||||||
|
background-clip: unset !important;
|
||||||
|
letter-spacing: -0.02em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-files-form-modal-header h2::before {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-files-form-modal-close {
|
||||||
|
width: 32px !important;
|
||||||
|
height: 32px !important;
|
||||||
|
font-size: 1.25rem !important;
|
||||||
|
border-radius: 8px !important;
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chat-files-form-modal-close:hover {
|
||||||
|
background: var(--bg-secondary) !important;
|
||||||
|
color: var(--text-primary) !important;
|
||||||
|
transform: none !important;
|
||||||
|
border-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
/* 新建文件夹弹窗:层次清晰、留白舒适,无强装饰 */
|
/* 新建文件夹弹窗:层次清晰、留白舒适,无强装饰 */
|
||||||
.chat-files-mkdir-modal-content {
|
.chat-files-mkdir-modal-content {
|
||||||
max-width: 480px;
|
max-width: 420px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-files-mkdir-body {
|
.chat-files-mkdir-body {
|
||||||
|
|||||||
@@ -1531,6 +1531,7 @@
|
|||||||
"confirmDelete": "Delete this file?",
|
"confirmDelete": "Delete this file?",
|
||||||
"editTitle": "Edit file",
|
"editTitle": "Edit file",
|
||||||
"renameTitle": "Rename",
|
"renameTitle": "Rename",
|
||||||
|
"renameCurrentFile": "Current file",
|
||||||
"newFileName": "New file name",
|
"newFileName": "New file name",
|
||||||
"empty": "No chat uploads yet",
|
"empty": "No chat uploads yet",
|
||||||
"errorLoad": "Failed to load",
|
"errorLoad": "Failed to load",
|
||||||
|
|||||||
@@ -1520,6 +1520,7 @@
|
|||||||
"confirmDelete": "确定删除该文件?",
|
"confirmDelete": "确定删除该文件?",
|
||||||
"editTitle": "编辑文件",
|
"editTitle": "编辑文件",
|
||||||
"renameTitle": "重命名",
|
"renameTitle": "重命名",
|
||||||
|
"renameCurrentFile": "当前文件",
|
||||||
"newFileName": "新文件名",
|
"newFileName": "新文件名",
|
||||||
"empty": "暂无对话附件",
|
"empty": "暂无对话附件",
|
||||||
"errorLoad": "加载失败",
|
"errorLoad": "加载失败",
|
||||||
|
|||||||
@@ -1052,15 +1052,26 @@ async function saveChatFilesEdit() {
|
|||||||
function openChatFilesRename(relativePath, currentName) {
|
function openChatFilesRename(relativePath, currentName) {
|
||||||
chatFilesRenameRelativePath = relativePath;
|
chatFilesRenameRelativePath = relativePath;
|
||||||
const input = document.getElementById('chat-files-rename-input');
|
const input = document.getElementById('chat-files-rename-input');
|
||||||
|
const hint = document.getElementById('chat-files-rename-path-hint');
|
||||||
const modal = document.getElementById('chat-files-rename-modal');
|
const modal = document.getElementById('chat-files-rename-modal');
|
||||||
if (input) input.value = currentName || '';
|
const pathText = relativePath ? ('chat_uploads/' + String(relativePath).replace(/\\/g, '/')) : 'chat_uploads';
|
||||||
if (modal) modal.style.display = 'block';
|
if (hint) hint.textContent = pathText;
|
||||||
setTimeout(() => { if (input) input.focus(); }, 100);
|
if (input) {
|
||||||
|
input.value = currentName || '';
|
||||||
|
input.select();
|
||||||
|
}
|
||||||
|
if (modal) modal.style.display = 'flex';
|
||||||
|
if (modal && typeof window.applyTranslations === 'function') {
|
||||||
|
window.applyTranslations(modal);
|
||||||
|
}
|
||||||
|
setTimeout(() => { if (input) { input.focus(); input.select(); } }, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeChatFilesRenameModal() {
|
function closeChatFilesRenameModal() {
|
||||||
const modal = document.getElementById('chat-files-rename-modal');
|
const modal = document.getElementById('chat-files-rename-modal');
|
||||||
if (modal) modal.style.display = 'none';
|
if (modal) modal.style.display = 'none';
|
||||||
|
const hint = document.getElementById('chat-files-rename-path-hint');
|
||||||
|
if (hint) hint.textContent = '';
|
||||||
chatFilesRenameRelativePath = '';
|
chatFilesRenameRelativePath = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1095,7 +1106,7 @@ function openChatFilesMkdirModal() {
|
|||||||
const p = chatFilesBrowsePath.join('/');
|
const p = chatFilesBrowsePath.join('/');
|
||||||
if (hint) hint.textContent = p ? ('chat_uploads/' + p) : 'chat_uploads';
|
if (hint) hint.textContent = p ? ('chat_uploads/' + p) : 'chat_uploads';
|
||||||
if (input) input.value = '';
|
if (input) input.value = '';
|
||||||
if (modal) modal.style.display = 'block';
|
if (modal) modal.style.display = 'flex';
|
||||||
if (modal && typeof window.applyTranslations === 'function') {
|
if (modal && typeof window.applyTranslations === 'function') {
|
||||||
window.applyTranslations(modal);
|
window.applyTranslations(modal);
|
||||||
}
|
}
|
||||||
|
|||||||
+24
-15
@@ -2998,30 +2998,39 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="chat-files-rename-modal" class="modal">
|
<div id="chat-files-rename-modal" class="modal chat-files-form-modal">
|
||||||
<div class="modal-content" style="max-width: 480px;">
|
<div class="modal-content chat-files-form-modal-content chat-files-mkdir-modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header chat-files-form-modal-header">
|
||||||
<h2 data-i18n="chatFilesPage.renameTitle">重命名</h2>
|
<h2 data-i18n="chatFilesPage.renameTitle">重命名</h2>
|
||||||
<span class="modal-close" onclick="closeChatFilesRenameModal()">×</span>
|
<span class="modal-close chat-files-form-modal-close" onclick="closeChatFilesRenameModal()" aria-label="Close">×</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body chat-files-mkdir-body">
|
||||||
<label class="chat-files-rename-label">
|
<div class="chat-files-mkdir-location">
|
||||||
<span data-i18n="chatFilesPage.newFileName">新文件名</span>
|
<div class="chat-files-mkdir-location-caption" data-i18n="chatFilesPage.renameCurrentFile">当前文件</div>
|
||||||
<input type="text" id="chat-files-rename-input" class="form-control" />
|
<div class="chat-files-mkdir-path-box">
|
||||||
|
<code class="chat-files-mkdir-path" id="chat-files-rename-path-hint"></code>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<label class="chat-files-rename-label chat-files-mkdir-label">
|
||||||
|
<span class="chat-files-mkdir-field-name">
|
||||||
|
<svg class="chat-files-mkdir-field-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/></svg>
|
||||||
|
<span data-i18n="chatFilesPage.newFileName">新文件名</span>
|
||||||
|
</span>
|
||||||
|
<input type="text" id="chat-files-rename-input" class="form-control chat-files-mkdir-input" autocomplete="off" />
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer chat-files-mkdir-footer">
|
||||||
<button type="button" class="btn-secondary" onclick="closeChatFilesRenameModal()" data-i18n="common.cancel">取消</button>
|
<button type="button" class="btn-secondary chat-files-mkdir-btn-cancel" onclick="closeChatFilesRenameModal()" data-i18n="common.cancel">取消</button>
|
||||||
<button type="button" class="btn-primary" onclick="submitChatFilesRename()" data-i18n="common.ok">确定</button>
|
<button type="button" class="btn-primary chat-files-mkdir-btn-submit" onclick="submitChatFilesRename()" data-i18n="common.ok">确定</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="chat-files-mkdir-modal" class="modal">
|
<div id="chat-files-mkdir-modal" class="modal chat-files-form-modal">
|
||||||
<div class="modal-content chat-files-mkdir-modal-content">
|
<div class="modal-content chat-files-form-modal-content chat-files-mkdir-modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header chat-files-form-modal-header">
|
||||||
<h2 data-i18n="chatFilesPage.newFolderTitle">新建文件夹</h2>
|
<h2 data-i18n="chatFilesPage.newFolderTitle">新建文件夹</h2>
|
||||||
<span class="modal-close" onclick="closeChatFilesMkdirModal()">×</span>
|
<span class="modal-close chat-files-form-modal-close" onclick="closeChatFilesMkdirModal()" aria-label="Close">×</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body chat-files-mkdir-body">
|
<div class="modal-body chat-files-mkdir-body">
|
||||||
<div class="chat-files-mkdir-location" aria-live="polite">
|
<div class="chat-files-mkdir-location" aria-live="polite">
|
||||||
|
|||||||
Reference in New Issue
Block a user