diff --git a/public/locales/en-US/application.json b/public/locales/en-US/application.json
index 1cf0598..7c7dc71 100644
--- a/public/locales/en-US/application.json
+++ b/public/locales/en-US/application.json
@@ -740,6 +740,8 @@
"connectionInfo": "Connection details",
"proxyTooltip": "Proxy all file download requests.",
"readonlyTooltip": "User can only read files through this account.",
+ "blockSysFilesUpload": "Block system files upload",
+ "blockSysFilesUploadTooltip": "When enabled, files starting with <0>.0> will be blocked from upload.",
"rootFolderIn": "Select <0>0>",
"createWebDavAccount": "Create WebDAV account",
"editWebDavAccount": "Edit {{name}}",
diff --git a/public/locales/es-ES/application.json b/public/locales/es-ES/application.json
index e736412..d00eb6b 100644
--- a/public/locales/es-ES/application.json
+++ b/public/locales/es-ES/application.json
@@ -808,8 +808,10 @@
"shoeQr": "Mostrar",
"deviceNothing": "El grupo de usuario actual no admite WebDAV",
"connectionInfo": "Información de conexión",
- "proxyTooltip": "El servidor proxy maneja todas las solicitudes de descarga de archivos",
- "readonlyTooltip": "El usuario solo puede leer archivos a través de esta cuenta",
+ "proxyTooltip": "El servidor proxy maneja todas las solicitudes de descarga de archivos.",
+ "readonlyTooltip": "El usuario solo puede leer archivos a través de esta cuenta.",
+ "blockSysFilesUpload": "Bloquear carga de archivos del sistema",
+ "blockSysFilesUploadTooltip": "Cuando esté habilitado, los archivos que comiencen con <0>.0> serán bloqueados para la carga.",
"rootFolderIn": "Seleccionar <0>0>",
"createWebDavAccount": "Crear cuenta WebDAV",
"editWebDavAccount": "Editar {{name}}",
diff --git a/public/locales/fr-FR/application.json b/public/locales/fr-FR/application.json
index c50d7c0..14ad43e 100644
--- a/public/locales/fr-FR/application.json
+++ b/public/locales/fr-FR/application.json
@@ -814,6 +814,8 @@
"connectionInfo": "Détails de connexion",
"proxyTooltip": "Proxyfier toutes les demandes de téléchargement de fichiers.",
"readonlyTooltip": "L'utilisateur ne peut que lire les fichiers via ce compte.",
+ "blockSysFilesUpload": "Bloquer le téléversement des fichiers système",
+ "blockSysFilesUploadTooltip": "Lorsqu'activé, les fichiers commençant par <0>.0> seront bloqués lors du téléversement.",
"rootFolderIn": "Sélectionner <0>0>",
"createWebDavAccount": "Créer un compte WebDAV",
"editWebDavAccount": "Modifier {{name}}",
diff --git a/public/locales/it-IT/application.json b/public/locales/it-IT/application.json
index 303cc44..e1213dc 100644
--- a/public/locales/it-IT/application.json
+++ b/public/locales/it-IT/application.json
@@ -810,6 +810,8 @@
"connectionInfo": "Dettagli connessione",
"proxyTooltip": "Proxy per tutte le richieste di download dei file.",
"readonlyTooltip": "L'utente può solo leggere i file attraverso questo account.",
+ "blockSysFilesUpload": "Blocca caricamento file di sistema",
+ "blockSysFilesUploadTooltip": "Quando abilitato, i file che iniziano con <0>.0> verranno bloccati dal caricamento.",
"rootFolderIn": "Seleziona <0>0>",
"createWebDavAccount": "Crea account WebDAV",
"editWebDavAccount": "Modifica {{name}}",
diff --git a/public/locales/ja-JP/application.json b/public/locales/ja-JP/application.json
index f8cc802..34f51e1 100644
--- a/public/locales/ja-JP/application.json
+++ b/public/locales/ja-JP/application.json
@@ -738,8 +738,10 @@
"shoeQr": "表示",
"deviceNothing": "現在のユーザーグループはWebDAVをサポートしていません",
"connectionInfo": "接続情報",
- "proxyTooltip": "サーバーがすべてのファイルダウンロード要求をプロキシします",
- "readonlyTooltip": "ユーザーはこのアカウントでのみファイルの読み取りが可能です",
+ "proxyTooltip": "サーバーがすべてのファイルダウンロード要求をプロキシします。",
+ "readonlyTooltip": "ユーザーはこのアカウントでのみファイルの読み取りが可能です。",
+ "blockSysFilesUpload": "システムファイルのアップロードをブロック",
+ "blockSysFilesUploadTooltip": "有効にすると、<0>.0> で始まるファイルのアップロードがブロックされます。",
"rootFolderIn": "選択 <0>0>",
"createWebDavAccount": "WebDAVアカウントの作成",
"editWebDavAccount": "{{name}}の編集",
diff --git a/public/locales/ko-KR/application.json b/public/locales/ko-KR/application.json
index 206b5c2..9c0986c 100644
--- a/public/locales/ko-KR/application.json
+++ b/public/locales/ko-KR/application.json
@@ -812,8 +812,10 @@
"shoeQr": "표시",
"deviceNothing": "현재 사용자 그룹은 WebDAV를 지원하지 않습니다",
"connectionInfo": "연결 정보",
- "proxyTooltip": "서버 측에서 모든 파일 다운로드 요청을 프록시",
- "readonlyTooltip": "사용자는 이 계정을 통해서만 파일을 읽을 수 있습니다",
+ "proxyTooltip": "서버 측에서 모든 파일 다운로드 요청을 프록시。",
+ "readonlyTooltip": "사용자는 이 계정을 통해서만 파일을 읽을 수 있습니다。",
+ "blockSysFilesUpload": "시스템 파일 업로드 차단",
+ "blockSysFilesUploadTooltip": "활성화하면 <0>.0>로 시작하는 파일의 업로드가 차단됩니다。",
"rootFolderIn": "<0>0> 선택",
"createWebDavAccount": "WebDAV 계정 생성",
"editWebDavAccount": "{{name}} 편집",
diff --git a/public/locales/pt-BR/application.json b/public/locales/pt-BR/application.json
index 9c8b863..a441719 100644
--- a/public/locales/pt-BR/application.json
+++ b/public/locales/pt-BR/application.json
@@ -814,6 +814,8 @@
"connectionInfo": "Detalhes de conexão",
"proxyTooltip": "Fazer proxy de todas as solicitações de download de arquivo.",
"readonlyTooltip": "Usuário pode apenas ler arquivos através desta conta.",
+ "blockSysFilesUpload": "Bloquear upload de arquivos do sistema",
+ "blockSysFilesUploadTooltip": "Quando habilitado, arquivos que começam com <0>.0> serão bloqueados para upload.",
"rootFolderIn": "Selecionar <0>0>",
"createWebDavAccount": "Criar conta WebDAV",
"editWebDavAccount": "Editar {{name}}",
diff --git a/public/locales/ru-RU/application.json b/public/locales/ru-RU/application.json
index 087f806..126f8bb 100644
--- a/public/locales/ru-RU/application.json
+++ b/public/locales/ru-RU/application.json
@@ -812,8 +812,10 @@
"shoeQr": "Показать",
"deviceNothing": "Текущая группа пользователей не поддерживает WebDAV",
"connectionInfo": "Информация о подключении",
- "proxyTooltip": "Проксировать все запросы на загрузку файлов через сервер",
- "readonlyTooltip": "Пользователь может только читать файлы через этот аккаунт",
+ "proxyTooltip": "Проксировать все запросы на загрузку файлов через сервер.",
+ "readonlyTooltip": "Пользователь может только читать файлы через этот аккаунт.",
+ "blockSysFilesUpload": "Блокировать загрузку системных файлов",
+ "blockSysFilesUploadTooltip": "При включении файлы, начинающиеся с <0>.0>, будут заблокированы для загрузки.",
"rootFolderIn": "Выбрать <0>0>",
"createWebDavAccount": "Создать аккаунт WebDAV",
"editWebDavAccount": "Редактировать {{name}}",
diff --git a/public/locales/zh-CN/application.json b/public/locales/zh-CN/application.json
index 6d54248..462cda4 100644
--- a/public/locales/zh-CN/application.json
+++ b/public/locales/zh-CN/application.json
@@ -738,8 +738,10 @@
"shoeQr": "显示",
"deviceNothing": "当前用户组不支持 WebDAV",
"connectionInfo": "连接信息",
- "proxyTooltip": "服务端代理所有文件下载请求",
- "readonlyTooltip": "用户只能通过此账号读取文件",
+ "proxyTooltip": "服务端代理所有文件下载请求。",
+ "readonlyTooltip": "用户只能通过此账号读取文件。",
+ "blockSysFilesUpload": "阻止上传系统文件",
+ "blockSysFilesUploadTooltip": "开启后,以 <0>.0> 开头的文件会被阻止上传。",
"rootFolderIn": "选择 <0>0>",
"createWebDavAccount": "创建 WebDAV 账号",
"editWebDavAccount": "编辑 {{name}}",
diff --git a/public/locales/zh-TW/application.json b/public/locales/zh-TW/application.json
index 4397360..3a10f15 100644
--- a/public/locales/zh-TW/application.json
+++ b/public/locales/zh-TW/application.json
@@ -738,8 +738,10 @@
"shoeQr": "顯示",
"deviceNothing": "當前使用者組不支援 WebDAV",
"connectionInfo": "連線資訊",
- "proxyTooltip": "服務端代理所有檔案下載請求",
- "readonlyTooltip": "使用者只能通過此賬號讀取檔案",
+ "proxyTooltip": "服務端代理所有檔案下載請求。",
+ "readonlyTooltip": "使用者只能通過此賬號讀取檔案。",
+ "blockSysFilesUpload": "阻止上傳系統檔案",
+ "blockSysFilesUploadTooltip": "開啟後,以 <0>.0> 開頭的檔案會被阻止上傳。",
"rootFolderIn": "選擇 <0>0>",
"createWebDavAccount": "建立 WebDAV 賬號",
"editWebDavAccount": "編輯 {{name}}",
diff --git a/src/api/setting.ts b/src/api/setting.ts
index 2b71283..ee8928d 100644
--- a/src/api/setting.ts
+++ b/src/api/setting.ts
@@ -22,6 +22,7 @@ export interface ListDavAccountsResponse {
export const DavAccountOption = {
readonly: 0,
proxy: 1,
+ disable_sys_files: 2,
};
export interface CreateDavAccountService {
@@ -29,4 +30,5 @@ export interface CreateDavAccountService {
uri: string;
readonly?: boolean;
proxy?: boolean;
+ disable_sys_files?: boolean;
}
diff --git a/src/component/Admin/Common/ProDialog.tsx b/src/component/Admin/Common/ProDialog.tsx
index aaebe0b..373e842 100644
--- a/src/component/Admin/Common/ProDialog.tsx
+++ b/src/component/Admin/Common/ProDialog.tsx
@@ -16,7 +16,7 @@ import { Trans, useTranslation } from "react-i18next";
import DraggableDialog, { StyledDialogActions } from "../../Dialogs/DraggableDialog";
import CheckmarkCircleFilled from "../../Icons/CheckmarkCircleFilled";
import Gift from "../../Icons/Gift";
-import { Code } from "./Code";
+import { Code } from "../../Common/Code.tsx";
export interface ProDialogProps {
open: boolean;
diff --git a/src/component/Admin/FileSystem/ViewerSetting/ImportWopiDialog.tsx b/src/component/Admin/FileSystem/ViewerSetting/ImportWopiDialog.tsx
index cae8dd6..7701fa3 100644
--- a/src/component/Admin/FileSystem/ViewerSetting/ImportWopiDialog.tsx
+++ b/src/component/Admin/FileSystem/ViewerSetting/ImportWopiDialog.tsx
@@ -7,7 +7,7 @@ import { useAppDispatch } from "../../../../redux/hooks.ts";
import { DenseFilledTextField } from "../../../Common/StyledComponents.tsx";
import DraggableDialog from "../../../Dialogs/DraggableDialog.tsx";
import SettingForm from "../../../Pages/Setting/SettingForm.tsx";
-import { Code } from "../../Common/Code.tsx";
+import { Code } from "../../../Common/Code.tsx";
import { NoMarginHelperText } from "../../Settings/Settings.tsx";
export interface ImportWopiDialogProps {
diff --git a/src/component/Admin/Node/EditNode/BasicInfoSection.tsx b/src/component/Admin/Node/EditNode/BasicInfoSection.tsx
index 9a543ff..a343872 100644
--- a/src/component/Admin/Node/EditNode/BasicInfoSection.tsx
+++ b/src/component/Admin/Node/EditNode/BasicInfoSection.tsx
@@ -8,7 +8,7 @@ import { useAppDispatch } from "../../../../redux/hooks";
import { DefaultCloseAction } from "../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, SecondaryButton } from "../../../Common/StyledComponents";
import SettingForm from "../../../Pages/Setting/SettingForm";
-import { Code } from "../../Common/Code";
+import { Code } from "../../../Common/Code.tsx";
import { EndpointInput } from "../../Common/EndpointInput";
import { NoMarginHelperText, SettingSection, SettingSectionContent } from "../../Settings/Settings";
import { NodeSettingContext } from "./NodeSettingWrapper";
diff --git a/src/component/Admin/Node/EditNode/CapabilitiesSection.tsx b/src/component/Admin/Node/EditNode/CapabilitiesSection.tsx
index b839f9b..261474c 100644
--- a/src/component/Admin/Node/EditNode/CapabilitiesSection.tsx
+++ b/src/component/Admin/Node/EditNode/CapabilitiesSection.tsx
@@ -24,7 +24,7 @@ import { DenseFilledTextField, DenseSelect, SecondaryButton } from "../../../Com
import { SquareMenuItem } from "../../../FileManager/ContextMenu/ContextMenu";
import QuestionCircle from "../../../Icons/QuestionCircle";
import SettingForm from "../../../Pages/Setting/SettingForm";
-import { Code } from "../../Common/Code";
+import { Code } from "../../../Common/Code.tsx";
import { EndpointInput } from "../../Common/EndpointInput";
import { NoMarginHelperText, SettingSection, SettingSectionContent } from "../../Settings/Settings";
import { NodeSettingContext } from "./NodeSettingWrapper";
diff --git a/src/component/Admin/Node/NewNode/NewNodeDialog.tsx b/src/component/Admin/Node/NewNode/NewNodeDialog.tsx
index 8e0de34..40d4018 100644
--- a/src/component/Admin/Node/NewNode/NewNodeDialog.tsx
+++ b/src/component/Admin/Node/NewNode/NewNodeDialog.tsx
@@ -13,7 +13,7 @@ import { DefaultCloseAction } from "../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, SecondaryButton } from "../../../Common/StyledComponents";
import DraggableDialog from "../../../Dialogs/DraggableDialog";
import SettingForm from "../../../Pages/Setting/SettingForm";
-import { Code } from "../../Common/Code";
+import { Code } from "../../../Common/Code.tsx";
import { EndpointInput } from "../../Common/EndpointInput";
import { NoMarginHelperText } from "../../Settings/Settings";
const MonacoEditor = lazy(() => import("../../../Viewers/CodeViewer/MonacoEditor"));
diff --git a/src/component/Admin/Settings/UserSession/UserSession.tsx b/src/component/Admin/Settings/UserSession/UserSession.tsx
index 41c7882..5a1b99d 100644
--- a/src/component/Admin/Settings/UserSession/UserSession.tsx
+++ b/src/component/Admin/Settings/UserSession/UserSession.tsx
@@ -7,7 +7,7 @@ import SizeInput from "../../../Common/SizeInput.tsx";
import { DenseFilledTextField, DenseSelect } from "../../../Common/StyledComponents.tsx";
import { SquareMenuItem } from "../../../FileManager/ContextMenu/ContextMenu.tsx";
import SettingForm, { ProChip } from "../../../Pages/Setting/SettingForm.tsx";
-import { Code } from "../../Common/Code.tsx";
+import { Code } from "../../../Common/Code.tsx";
import GroupSelectionInput from "../../Common/GroupSelectionInput.tsx";
import SharesInput from "../../Common/SharesInput.tsx";
import { NoMarginHelperText, SettingSection, SettingSectionContent } from "../Settings.tsx";
diff --git a/src/component/Admin/StoragePolicy/EditStoragePolicy/FormSections/BasicInfoSection.tsx b/src/component/Admin/StoragePolicy/EditStoragePolicy/FormSections/BasicInfoSection.tsx
index 247e984..a63ea09 100644
--- a/src/component/Admin/StoragePolicy/EditStoragePolicy/FormSections/BasicInfoSection.tsx
+++ b/src/component/Admin/StoragePolicy/EditStoragePolicy/FormSections/BasicInfoSection.tsx
@@ -21,7 +21,7 @@ import { DefaultCloseAction } from "../../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, DenseSelect, SecondaryButton } from "../../../../Common/StyledComponents";
import { SquareMenuItem } from "../../../../FileManager/ContextMenu/ContextMenu";
import SettingForm from "../../../../Pages/Setting/SettingForm";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { EndpointInput } from "../../../Common/EndpointInput";
import NodeSelectionInput from "../../../Common/NodeSelectionInput";
import { NoMarginHelperText, SettingSection, SettingSectionContent } from "../../../Settings/Settings";
diff --git a/src/component/Admin/StoragePolicy/StoragePolicySetting.tsx b/src/component/Admin/StoragePolicy/StoragePolicySetting.tsx
index c052f2a..262d2d9 100644
--- a/src/component/Admin/StoragePolicy/StoragePolicySetting.tsx
+++ b/src/component/Admin/StoragePolicy/StoragePolicySetting.tsx
@@ -15,7 +15,7 @@ import ArrowSync from "../../Icons/ArrowSync";
import PageContainer from "../../Pages/PageContainer";
import PageHeader from "../../Pages/PageHeader";
import { BorderedCardClickable } from "../Common/AdminCard";
-import { Code } from "../Common/Code";
+import { Code } from "../../Common/Code.tsx";
import TablePagination from "../Common/TablePagination";
import AddWizardDialog, { AddWizardProps } from "./AddWizardDialog";
import SelectProvider from "./SelectProvider";
diff --git a/src/component/Admin/StoragePolicy/Wizards/COS/CosWizard.tsx b/src/component/Admin/StoragePolicy/Wizards/COS/CosWizard.tsx
index 574bf00..8705a45 100644
--- a/src/component/Admin/StoragePolicy/Wizards/COS/CosWizard.tsx
+++ b/src/component/Admin/StoragePolicy/Wizards/COS/CosWizard.tsx
@@ -9,7 +9,7 @@ import { useAppDispatch } from "../../../../../redux/hooks";
import { DefaultCloseAction } from "../../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, SecondaryButton } from "../../../../Common/StyledComponents";
import SettingForm from "../../../../Pages/Setting/SettingForm";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { EndpointInput } from "../../../Common/EndpointInput";
import { NoMarginHelperText } from "../../../Settings/Settings";
import { AddWizardProps } from "../../AddWizardDialog";
diff --git a/src/component/Admin/StoragePolicy/Wizards/KS3/KS3Wizard.tsx b/src/component/Admin/StoragePolicy/Wizards/KS3/KS3Wizard.tsx
index 1852867..23f8022 100644
--- a/src/component/Admin/StoragePolicy/Wizards/KS3/KS3Wizard.tsx
+++ b/src/component/Admin/StoragePolicy/Wizards/KS3/KS3Wizard.tsx
@@ -9,7 +9,7 @@ import { useAppDispatch } from "../../../../../redux/hooks";
import { DefaultCloseAction } from "../../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, SecondaryButton } from "../../../../Common/StyledComponents";
import SettingForm from "../../../../Pages/Setting/SettingForm";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { EndpointInput } from "../../../Common/EndpointInput";
import { NoMarginHelperText } from "../../../Settings/Settings";
import { AddWizardProps } from "../../AddWizardDialog";
diff --git a/src/component/Admin/StoragePolicy/Wizards/OBS/ObsWizard.tsx b/src/component/Admin/StoragePolicy/Wizards/OBS/ObsWizard.tsx
index c1d5ea3..c334f14 100644
--- a/src/component/Admin/StoragePolicy/Wizards/OBS/ObsWizard.tsx
+++ b/src/component/Admin/StoragePolicy/Wizards/OBS/ObsWizard.tsx
@@ -9,7 +9,7 @@ import { useAppDispatch } from "../../../../../redux/hooks";
import { DefaultCloseAction } from "../../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, SecondaryButton } from "../../../../Common/StyledComponents";
import SettingForm from "../../../../Pages/Setting/SettingForm";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { EndpointInput } from "../../../Common/EndpointInput";
import { NoMarginHelperText } from "../../../Settings/Settings";
import { AddWizardProps } from "../../AddWizardDialog";
diff --git a/src/component/Admin/StoragePolicy/Wizards/OSS/OssWizard.tsx b/src/component/Admin/StoragePolicy/Wizards/OSS/OssWizard.tsx
index d41891b..6d3797d 100644
--- a/src/component/Admin/StoragePolicy/Wizards/OSS/OssWizard.tsx
+++ b/src/component/Admin/StoragePolicy/Wizards/OSS/OssWizard.tsx
@@ -9,7 +9,7 @@ import { useAppDispatch } from "../../../../../redux/hooks";
import { DefaultCloseAction } from "../../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, SecondaryButton } from "../../../../Common/StyledComponents";
import SettingForm from "../../../../Pages/Setting/SettingForm";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { NoMarginHelperText } from "../../../Settings/Settings";
import { AddWizardProps } from "../../AddWizardDialog";
import BucketACLInput from "../../EditStoragePolicy/BucketACLInput";
diff --git a/src/component/Admin/StoragePolicy/Wizards/OneDrive/OneDriveAuthDialog.tsx b/src/component/Admin/StoragePolicy/Wizards/OneDrive/OneDriveAuthDialog.tsx
index 94670f6..f8a0de0 100644
--- a/src/component/Admin/StoragePolicy/Wizards/OneDrive/OneDriveAuthDialog.tsx
+++ b/src/component/Admin/StoragePolicy/Wizards/OneDrive/OneDriveAuthDialog.tsx
@@ -5,7 +5,7 @@ import { getPolicyOauthRedirectUrl } from "../../../../../api/api";
import { useAppDispatch } from "../../../../../redux/hooks";
import { DenseFilledTextField } from "../../../../Common/StyledComponents";
import DraggableDialog from "../../../../Dialogs/DraggableDialog";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { NoMarginHelperText } from "../../../Settings/Settings";
interface OneDriveAuthDialogProps {
diff --git a/src/component/Admin/StoragePolicy/Wizards/OneDrive/OneDriveWizard.tsx b/src/component/Admin/StoragePolicy/Wizards/OneDrive/OneDriveWizard.tsx
index 73963cd..5ad304e 100644
--- a/src/component/Admin/StoragePolicy/Wizards/OneDrive/OneDriveWizard.tsx
+++ b/src/component/Admin/StoragePolicy/Wizards/OneDrive/OneDriveWizard.tsx
@@ -7,7 +7,7 @@ import { PolicyType } from "../../../../../api/explorer";
import { useAppDispatch } from "../../../../../redux/hooks";
import { DenseFilledTextField } from "../../../../Common/StyledComponents";
import SettingForm from "../../../../Pages/Setting/SettingForm";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { NoMarginHelperText } from "../../../Settings/Settings";
import { AddWizardProps } from "../../AddWizardDialog";
import GraphEndpointSelection from "./GraphEndpointSelection";
diff --git a/src/component/Admin/StoragePolicy/Wizards/S3/S3Wizard.tsx b/src/component/Admin/StoragePolicy/Wizards/S3/S3Wizard.tsx
index 391ba7d..416f4de 100644
--- a/src/component/Admin/StoragePolicy/Wizards/S3/S3Wizard.tsx
+++ b/src/component/Admin/StoragePolicy/Wizards/S3/S3Wizard.tsx
@@ -9,7 +9,7 @@ import { useAppDispatch } from "../../../../../redux/hooks";
import { DefaultCloseAction } from "../../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, SecondaryButton } from "../../../../Common/StyledComponents";
import SettingForm from "../../../../Pages/Setting/SettingForm";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { EndpointInput } from "../../../Common/EndpointInput";
import { NoMarginHelperText } from "../../../Settings/Settings";
import { AddWizardProps } from "../../AddWizardDialog";
diff --git a/src/component/Admin/StoragePolicy/Wizards/Upyun/UpyunWizard.tsx b/src/component/Admin/StoragePolicy/Wizards/Upyun/UpyunWizard.tsx
index bfd6f8a..49fe751 100644
--- a/src/component/Admin/StoragePolicy/Wizards/Upyun/UpyunWizard.tsx
+++ b/src/component/Admin/StoragePolicy/Wizards/Upyun/UpyunWizard.tsx
@@ -7,7 +7,7 @@ import { PolicyType } from "../../../../../api/explorer";
import { useAppDispatch } from "../../../../../redux/hooks";
import { DenseFilledTextField } from "../../../../Common/StyledComponents";
import SettingForm from "../../../../Pages/Setting/SettingForm";
-import { Code } from "../../../Common/Code";
+import { Code } from "../../../../Common/Code.tsx";
import { EndpointInput } from "../../../Common/EndpointInput";
import { NoMarginHelperText } from "../../../Settings/Settings";
import { AddWizardProps } from "../../AddWizardDialog";
diff --git a/src/component/Admin/Common/Code.tsx b/src/component/Common/Code.tsx
similarity index 100%
rename from src/component/Admin/Common/Code.tsx
rename to src/component/Common/Code.tsx
diff --git a/src/component/FileManager/Dialogs/Share/ShareSetting.tsx b/src/component/FileManager/Dialogs/Share/ShareSetting.tsx
index 26953af..2ac9526 100644
--- a/src/component/FileManager/Dialogs/Share/ShareSetting.tsx
+++ b/src/component/FileManager/Dialogs/Share/ShareSetting.tsx
@@ -20,7 +20,7 @@ import MuiAccordionSummary from "@mui/material/AccordionSummary";
import { useState } from "react";
import { Trans, useTranslation } from "react-i18next";
import { FileResponse, FileType } from "../../../../api/explorer.ts";
-import { Code } from "../../../Admin/Common/Code.tsx";
+import { Code } from "../../../Common/Code.tsx";
import { FilledTextField, SmallFormControlLabel } from "../../../Common/StyledComponents.tsx";
import BookInformation from "../../../Icons/BookInformation.tsx";
import ClockArrowDownload from "../../../Icons/ClockArrowDownload.tsx";
diff --git a/src/component/Pages/Devices/CreateDAVAccountDialog.tsx b/src/component/Pages/Devices/CreateDAVAccountDialog.tsx
index 67c1337..8341bad 100644
--- a/src/component/Pages/Devices/CreateDAVAccountDialog.tsx
+++ b/src/component/Pages/Devices/CreateDAVAccountDialog.tsx
@@ -1,21 +1,22 @@
-import { useTranslation } from "react-i18next";
import { Checkbox, DialogContent, DialogProps, FormGroup, Stack, Typography, useTheme } from "@mui/material";
-import { useAppDispatch } from "../../../redux/hooks.ts";
-import DraggableDialog from "../../Dialogs/DraggableDialog.tsx";
import { useSnackbar } from "notistack";
import { useEffect, useMemo, useState } from "react";
-import { PathSelectorForm } from "../../Common/Form/PathSelectorForm.tsx";
-import { defaultPath } from "../../../hooks/useNavigation.tsx";
-import { Filesystem } from "../../../util/uri.ts";
-import { OutlineIconTextField } from "../../Common/Form/OutlineIconTextField.tsx";
-import Tag from "../../Icons/Tag.tsx";
-import DialogAccordion from "../../Dialogs/DialogAccordion.tsx";
-import Boolset from "../../../util/boolset.ts";
-import { GroupPermission } from "../../../api/user.ts";
-import SessionManager from "../../../session";
-import { SmallFormControlLabel } from "../../Common/StyledComponents.tsx";
+import { Trans, useTranslation } from "react-i18next";
import { sendCreateDavAccounts, sendUpdateDavAccounts } from "../../../api/api.ts";
import { DavAccount, DavAccountOption } from "../../../api/setting.ts";
+import { GroupPermission } from "../../../api/user.ts";
+import { defaultPath } from "../../../hooks/useNavigation.tsx";
+import { useAppDispatch } from "../../../redux/hooks.ts";
+import SessionManager from "../../../session";
+import Boolset from "../../../util/boolset.ts";
+import { Filesystem } from "../../../util/uri.ts";
+import { Code } from "../../Common/Code.tsx";
+import { OutlineIconTextField } from "../../Common/Form/OutlineIconTextField.tsx";
+import { PathSelectorForm } from "../../Common/Form/PathSelectorForm.tsx";
+import { SmallFormControlLabel } from "../../Common/StyledComponents.tsx";
+import DialogAccordion from "../../Dialogs/DialogAccordion.tsx";
+import DraggableDialog from "../../Dialogs/DraggableDialog.tsx";
+import Tag from "../../Icons/Tag.tsx";
export interface CreateDAVAccountDialogProps extends DialogProps {
onAccountAdded?: (account: DavAccount) => void;
@@ -39,6 +40,7 @@ const CreateDAVAccountDialog = ({
const [name, setName] = useState("");
const [path, setPath] = useState(defaultPath);
const [readonly, setReadonly] = useState(false);
+ const [blockSysFilesUpload, setBlockSysFilesUpload] = useState(false);
const [proxy, setProxy] = useState(false);
const theme = useTheme();
@@ -54,6 +56,7 @@ const CreateDAVAccountDialog = ({
setPath(editTarget.uri);
const options = new Boolset(editTarget.options);
setReadonly(options.enabled(DavAccountOption.readonly));
+ setBlockSysFilesUpload(options.enabled(DavAccountOption.disable_sys_files));
setProxy(options.enabled(DavAccountOption.proxy));
}
}, [open]);
@@ -69,6 +72,7 @@ const CreateDAVAccountDialog = ({
uri: path,
proxy,
readonly,
+ disable_sys_files: blockSysFilesUpload,
};
dispatch(editTarget ? sendUpdateDavAccounts(editTarget.id, req) : sendCreateDavAccounts(req))
.then((account) => {
@@ -135,6 +139,23 @@ const CreateDAVAccountDialog = ({
{t("application:setting.readonlyTooltip")}
+ setBlockSysFilesUpload(e.target.checked)}
+ checked={blockSysFilesUpload}
+ />
+ }
+ label={t("application:setting.blockSysFilesUpload")}
+ />
+
+ ]}
+ />
+
{groupProxyEnabled && (
<>