diff --git a/public/locales/en-US/dashboard.json b/public/locales/en-US/dashboard.json
index 080691a..ef8a290 100644
--- a/public/locales/en-US/dashboard.json
+++ b/public/locales/en-US/dashboard.json
@@ -61,9 +61,9 @@
"totalBlobs": "Blobs",
"homepage": "Homepage",
"documents": "Documents",
- "forum": "Forum",
- "forumLink": "https://github.com/cloudreve/Cloudreve/discussions",
"discordCommunity": "Discord community",
+ "telegram": "Telegram group",
+ "forum": "GitHub Discussions",
"buyPro": "Upgrade to Pro",
"publishedAt": "published at <0>0>",
"newsTag": "announcements",
@@ -120,7 +120,7 @@
"perPage": "{{num}} per page",
"noNodes": "No nodes available.",
"extractMediaMeta": "Extract media metadata",
- "extractMediaMetaDes": "Extract media file metadata for display and search. By default, non-local storage policies will only use the \"Native in storage policy\" generator. You can extend the thumbnail capability of third-party storage policies by enabling the \"Extractor proxy\" feature in storage policy setting page.",
+ "extractMediaMetaDes": "Extract media file metadata for display and search. By default, non-local storage policies will only use the \"Native in storage policy\" generator. You can extend the thumbnail capability of third-party storage policies by enabling the \"Extractor proxy\" feature in storage policy setting page. For more details, please refer to <0>documentat0>.",
"exif": "EXIF",
"exifDes": "Extract EXIF metadata from image files for display and search.",
"music": "Music metadata",
@@ -164,7 +164,7 @@
"searchQuery": "File categorize query",
"importWopi": "Import WOPI app settings",
"wopiEndpoint": "WOPI Discovery Endpoint",
- "wopiDes": "Extend Cloudreve's online preview and editing capabilities by integrating with online document processing systems that support the WOPI protocol. Please fill in the WOPI service discovery address here, such as https://example.com/hosting/discovery",
+ "wopiDes": "Extend Cloudreve's online preview and editing capabilities by integrating with online document processing systems that support the WOPI protocol. Please fill in the WOPI service discovery address here, such as <0>https://example.com/hosting/discovery0>. For more details, please refer to <1>documentat1>.",
"embeddedWebpageViewer": "Embedded Webpage Viewer",
"wopiViewer": "WOPI Application",
"ext": "Extension",
@@ -373,7 +373,7 @@
"generators": "Thumbnail generators",
"thumbMaxSize": "Maximum original file size",
"thumbMaxSizeDes": "The maximum original file size for which thumbnails can be generated, thumbnails will not be generated if files exceed this size.",
- "generatorProxyWarning": "By default, non-local storage policies will only use the \"Native in storage policy\" generator. You can extend the thumbnail capability of third-party storage policies by enabling the \"Generator proxy\" feature in storage policy setting page.",
+ "generatorProxyWarning": "By default, non-local storage policies will only use the \"Native in storage policy\" generator. You can extend the thumbnail capability of third-party storage policies by enabling the \"Generator proxy\" feature in storage policy setting page. For more details, please refer to <0>documentat0>.",
"policyBuiltin": "Native in storage policy",
"policyBuiltinDes": "Use the native API from storage provider to process thumbnails. For local and S3 policy, this generator is not available and will automatically fallback to other generators. For other storage policies, please go to storage policy setting page to configure this generator.",
"cloudreveBuiltin": "Cloudreve built-in",
@@ -681,6 +681,7 @@
"unknownProduct": "Unknown Product"
},
"policy": {
+ "compare": "Compare",
"deletePolicyConfirmation": "Are you sure you want to delete the storage policy {{name}}?",
"streamSaver": "Download via browser",
"streamSaverDes": "When enabled, users' download requests will be handled by the browser. Due to the OneDrive storage policy limitation, the file name of the file downloaded directly by users cannot be the same as the file name in Cloudreve, using the browser to handle downloads can solve this problem.",
diff --git a/public/locales/ja-JP/dashboard.json b/public/locales/ja-JP/dashboard.json
index 6ecf5b1..6425cf4 100644
--- a/public/locales/ja-JP/dashboard.json
+++ b/public/locales/ja-JP/dashboard.json
@@ -61,9 +61,9 @@
"totalBlobs": "ファイルBlob",
"homepage": "ホーム",
"documents": "ドキュメント",
- "forum": "ディスカッションコミュニティ",
- "forumLink": "https://forum.cloudreve.org",
"discordCommunity": "Discordコミュニティ",
+ "telegram": "Telegramグループ",
+ "forum": "GitHubディスカッション",
"buyPro": "Pro にアップグレード",
"publishedAt": "公開日 <0>0>",
"newsTag": "お知らせ",
@@ -120,7 +120,7 @@
"perPage": "1ページあたり {{num}} 件",
"noNodes": "使用可能なノードがありません。",
"extractMediaMeta": "メディア情報抽出",
- "extractMediaMetaDes": "表示と検索のためにメディアファイルのメタデータを取得します。デフォルトでは、ネイティブでないストレージポリシーは「ストレージポリシーネイティブ」方式のみを使用します。「ストレージポリシー設定」ページで「エクストラクターエージェント」機能を有効にすると、サードパーティストレージポリシーのサムネイル機能を拡張できます。",
+ "extractMediaMetaDes": "表示と検索のためにメディアファイルのメタデータを取得します。デフォルトでは、ネイティブでないストレージポリシーは「ストレージポリシーネイティブ」方式のみを使用します。「ストレージポリシー設定」ページで「エクストラクターエージェント」機能を有効にすると、サードパーティストレージポリシーのサムネイル機能を拡張できます。詳細は<0>公式ドキュメント0>を参照してください。",
"exif": "EXIF",
"exifDes": "表示と検索のために画像ファイルからEXIFメタデータを取得します。",
"music": "音楽メタデータ",
@@ -164,7 +164,7 @@
"searchQuery": "ファイル分類検索",
"importWopi": "WOPIアプリケーション設定のインポート",
"wopiEndpoint": "WOPI Discovery エンドポイント",
- "wopiDes": "WOPIプロトコルに対応したオンラインドキュメント処理システムと連携することで、Cloudreveのオンラインプレビューと編集機能を拡張します。WOPIサービスの検出アドレスをここに記入してください(例: https://example.com/hosting/discovery)。",
+ "wopiDes": "WOPIプロトコルに対応したオンラインドキュメント処理システムと連携することで、Cloudreveのオンラインプレビューと編集機能を拡張します。WOPIサービスの検出アドレスをここに記入してください(例: <0>https://example.com/hosting/discovery0>)。詳細は<1>公式ドキュメント1>を参照してください。",
"embeddedWebpageViewer": "ウェブアプリの埋め込み",
"wopiViewer": "WOPIプロトコルアプリケーション",
"ext": "拡張子",
@@ -371,7 +371,7 @@
"generators": "サムネイル生成器",
"thumbMaxSize": "最大元ファイルサイズ",
"thumbMaxSizeDes": "サムネイルを生成できる最大元のファイルサイズ。このサイズを超えるファイルはサムネイルが生成されません。",
- "generatorProxyWarning": "デフォルトでは、ネイティブ以外のストレージポリシーは「ストレージポリシーネイティブ」ジェネレーターのみを使用します。「ジェネレータープロキシ」機能をストレージポリシー設定ページで有効にすると、サードパーティのストレージポリシーのサムネイル生成機能を拡張できます。",
+ "generatorProxyWarning": "デフォルトでは、ネイティブ以外のストレージポリシーは「ストレージポリシーネイティブ」ジェネレーターのみを使用します。「ジェネレータープロキシ」機能をストレージポリシー設定ページで有効にすると、サードパーティのストレージポリシーのサムネイル生成機能を拡張できます。詳細は<0>公式ドキュメント0>を参照してください。",
"policyBuiltin": "ストレージポリシーネイティブ",
"policyBuiltinDes": "ストレージプロバイダーのネイティブな画像処理インターフェースを使用します。ネイティブおよびS3ポリシーではこのジェネレーターは使用できず、自動的に他のジェネレーターが使用されます。他のストレージポリシーについては、ストレージポリシー設定ページで許可する拡張子を設定してください。",
"cloudreveBuiltin": "Cloudreve内蔵",
@@ -674,6 +674,7 @@
"unknownProduct": "不明な商品"
},
"policy": {
+ "compare": "ストレージポリシーの比較",
"deletePolicyConfirmation": "ストレージポリシー「{{name}}」を削除しますか?",
"streamSaver": "ブラウザでダウンロード処理",
"streamSaverDes": "有効にすると、ユーザーがファイルをダウンロードする際に、ブラウザでの処理が強制されます。OneDriveストレージポリシーの制限により、ユーザーがファイルを直接ダウンロードする場合、ファイル名がCloudreve内のファイル名と一致しない可能性があります。ブラウザでダウンロード処理を行うことで、この問題を解決できます。",
diff --git a/public/locales/zh-CN/dashboard.json b/public/locales/zh-CN/dashboard.json
index e3d5db7..7311eeb 100644
--- a/public/locales/zh-CN/dashboard.json
+++ b/public/locales/zh-CN/dashboard.json
@@ -61,9 +61,9 @@
"totalBlobs": "文件 Blob",
"homepage": "主页",
"documents": "文档",
- "forum": "讨论社区",
- "forumLink": "https://forum.cloudreve.org",
"discordCommunity": "Discord 社群",
+ "telegram": "Telegram 社群",
+ "forum": "社区论坛",
"buyPro": "升级到 Pro",
"publishedAt": "发表于 <0>0>",
"newsTag": "notice",
@@ -120,7 +120,7 @@
"perPage": "每页 {{num}} 条",
"noNodes": "没有可用的节点。",
"extractMediaMeta": "媒体信息提取",
- "extractMediaMetaDes": "提取媒体文件的元数据以用于展示和搜索。默认情况下,非本机存储策略只会使用“存储策略原生”方式提取。你可以在存储策略设置页面开启“提取器代理”功能扩展第三方存储策略的缩略图能力。",
+ "extractMediaMetaDes": "提取媒体文件的元数据以用于展示和搜索。默认情况下,非本机存储策略只会使用“存储策略原生”方式提取。你可以在存储策略设置页面开启“提取器代理”功能扩展第三方存储策略的缩略图能力。详情请参考 <0>官方文档0>。",
"exif": "EXIF",
"exifDes": "从图片文件中提取 EXIF 元数据以用于展示和搜索。",
"music": "音乐元数据",
@@ -164,7 +164,7 @@
"searchQuery": "文件分类查询",
"importWopi": "导入 WOPI 应用设置",
"wopiEndpoint": "WOPI Discovery Endpoint",
- "wopiDes": "通过对接支持 WOPI 协议的在线文档处理系统,扩展 Cloudreve 的文档在线预览和编辑能力。请在此填写 WOPI 服务发现地址,比如 https://example.com/hosting/discovery",
+ "wopiDes": "通过对接支持 WOPI 协议的在线文档处理系统,扩展 Cloudreve 的文档在线预览和编辑能力。请在此填写 WOPI 服务发现地址,比如 <0>https://example.com/hosting/discovery0>。详情请参考 <1>官方文档1>。",
"embeddedWebpageViewer": "嵌入网页式应用",
"wopiViewer": "WOPI 协议应用",
"ext": "扩展名",
@@ -371,7 +371,7 @@
"generators": "缩略图生成器",
"thumbMaxSize": "最大原始文件尺寸",
"thumbMaxSizeDes": "可生成缩略图的最大原始文件的大小,超出此大小的文件不会生成缩略图。",
- "generatorProxyWarning": "默认情况下,非本机存储策略只会使用“存储策略原生”生成器。你可以在存储策略设置页面开启“生成器代理”功能扩展第三方存储策略的缩略图能力。",
+ "generatorProxyWarning": "默认情况下,非本机存储策略只会使用“存储策略原生”生成器。你可以在存储策略设置页面开启“生成器代理”功能扩展第三方存储策略的缩略图能力。详情请参考 <0>官方文档0>。",
"policyBuiltin": "存储策略原生",
"policyBuiltinDes": "使用存储提供方原生的图像处理接口。对于本机和 S3 策略,这一生成器不可用,将会自动顺沿其他生成器。对于其他存储策略,请前往存储策略设置页面设置允许的扩展名。",
"cloudreveBuiltin": "Cloudreve 内置",
@@ -674,6 +674,7 @@
"unknownProduct": "未知产品"
},
"policy": {
+ "compare": "对比存储策略",
"deletePolicyConfirmation": "确定要删除存储策略 {{name}} 吗?",
"streamSaver": "由浏览器处理下载",
"streamSaverDes": "开启后,用户下载文件时会强制由浏览器处理。因为 OneDrive 存储策略的限制,用户直接下载文件时得到的文件名无法与 Cloudreve 内文件名一致,由浏览器处理下载可以解决此问题。",
diff --git a/public/locales/zh-TW/dashboard.json b/public/locales/zh-TW/dashboard.json
index 2d39f4e..791eb0a 100644
--- a/public/locales/zh-TW/dashboard.json
+++ b/public/locales/zh-TW/dashboard.json
@@ -61,9 +61,9 @@
"totalBlobs": "檔案 Blob",
"homepage": "主頁",
"documents": "檔案",
- "forum": "討論社群",
- "forumLink": "https://forum.cloudreve.org",
"discordCommunity": "Discord 社群",
+ "telegram": "Telegram 社群",
+ "forum": "社區論壇",
"buyPro": "升級到 Pro",
"publishedAt": "發表於 <0>0>",
"newsTag": "notice",
@@ -117,7 +117,7 @@
"perPage": "每頁 {{num}} 條",
"noNodes": "沒有可用的節點。",
"extractMediaMeta": "媒體資訊提取",
- "extractMediaMetaDes": "提取媒體檔案的元資料以用於展示和搜尋。預設情況下,非本機儲存策略只會使用“儲存策略原生”方式提取。你可以在儲存策略設定頁面開啟“提取器代理”功能擴充套件第三方儲存策略的縮圖能力。",
+ "extractMediaMetaDes": "提取媒體檔案的元資料以用於展示和搜尋。預設情況下,非本機儲存策略只會使用“儲存策略原生”方式提取。你可以在儲存策略設定頁面開啟“提取器代理”功能擴充套件第三方儲存策略的縮圖能力。詳細請參閱 <0>官方檔案0>。",
"exif": "EXIF",
"exifDes": "從圖片檔案中提取 EXIF 元資料以用於展示和搜尋。",
"music": "音樂元資料",
@@ -161,7 +161,7 @@
"searchQuery": "檔案分類查詢",
"importWopi": "匯入 WOPI 應用設定",
"wopiEndpoint": "WOPI Discovery Endpoint",
- "wopiDes": "通過對接支援 WOPI 協議的線上檔案處理系統,擴充套件 Cloudreve 的檔案線上預覽和編輯能力。請在此填寫 WOPI 服務發現地址,比如 https://example.com/hosting/discovery",
+ "wopiDes": "通過對接支援 WOPI 協議的線上檔案處理系統,擴充套件 Cloudreve 的檔案線上預覽和編輯能力。請在此填寫 WOPI 服務發現地址,比如 <0>https://example.com/hosting/discovery0>。詳細請參閱 <1>官方檔案1>。",
"embeddedWebpageViewer": "嵌入網頁式應用",
"wopiViewer": "WOPI 協議應用",
"ext": "副檔名",
@@ -368,7 +368,7 @@
"generators": "縮圖生成器",
"thumbMaxSize": "最大原始檔案尺寸",
"thumbMaxSizeDes": "可生成縮圖的最大原始檔案的大小,超出此大小的檔案不會生成縮圖。",
- "generatorProxyWarning": "預設情況下,非本機儲存策略只會使用“儲存策略原生”生成器。你可以在儲存策略設定頁面開啟“生成器代理”功能擴充套件第三方儲存策略的縮圖能力。",
+ "generatorProxyWarning": "預設情況下,非本機儲存策略只會使用“儲存策略原生”生成器。你可以在儲存策略設定頁面開啟“生成器代理”功能擴充套件第三方儲存策略的縮圖能力。詳細請參閱 <0>官方檔案0>。",
"policyBuiltin": "儲存策略原生",
"policyBuiltinDes": "使用儲存提供方原生的影象處理介面。對於本機和 S3 策略,這一生成器不可用,將會自動順沿其他生成器。對於其他儲存策略,請前往儲存策略設定頁面設定允許的副檔名。",
"cloudreveBuiltin": "Cloudreve 內建",
@@ -671,6 +671,7 @@
"unknownProduct": "未知產品"
},
"policy": {
+ "compare": "儲存策略對比",
"deletePolicyConfirmation": "確定要刪除儲存策略 {{name}} 嗎?",
"streamSaver": "由瀏覽器處理下載",
"streamSaverDes": "開啟後,使用者下載檔案時會強制由瀏覽器處理。因為 OneDrive 儲存策略的限制,使用者直接下載檔案時得到的檔名無法與 Cloudreve 內檔名一致,由瀏覽器處理下載可以解決此問題。",
diff --git a/src/component/Admin/Home/Home.tsx b/src/component/Admin/Home/Home.tsx
index fe45f11..0e18267 100644
--- a/src/component/Admin/Home/Home.tsx
+++ b/src/component/Admin/Home/Home.tsx
@@ -40,10 +40,12 @@ import OpenFilled from "../../Icons/OpenFilled.tsx";
import PeopleFilled from "../../Icons/PeopleFilled.tsx";
import ShareFilled from "../../Icons/ShareFilled.tsx";
import SparkleFilled from "../../Icons/SparkleFilled.tsx";
+import Telegram from "../../Icons/Telegram.tsx";
import PageContainer from "../../Pages/PageContainer.tsx";
import PageHeader from "../../Pages/PageHeader.tsx";
import ProDialog from "../Common/ProDialog.tsx";
import SiteUrlWarning from "./SiteUrlWarning.tsx";
+import CommentMultiple from "../../Icons/CommentMultiple.tsx";
const StyledPaper = styled(Paper)(({ theme }) => ({
padding: theme.spacing(3),
@@ -351,6 +353,24 @@ const Home = () => {
+ window.open("https://t.me/cloudreve_official")}>
+
+
+
+
+
+
+
+
+ window.open("https://github.com/cloudreve/Cloudreve/discussions")}>
+
+
+
+
+
+
+
+
{summary && !summary.version.pro && (
setProDialogOpen(true)}>
diff --git a/src/component/Admin/Node/EditNode/CapabilitiesSection.tsx b/src/component/Admin/Node/EditNode/CapabilitiesSection.tsx
index 3c6af73..b839f9b 100644
--- a/src/component/Admin/Node/EditNode/CapabilitiesSection.tsx
+++ b/src/component/Admin/Node/EditNode/CapabilitiesSection.tsx
@@ -3,6 +3,7 @@ import {
Collapse,
FormControl,
FormControlLabel,
+ IconButton,
Link,
ListItemText,
SelectChangeEvent,
@@ -21,6 +22,7 @@ import Boolset from "../../../../util/boolset";
import { DefaultCloseAction } from "../../../Common/Snackbar/snackbar";
import { DenseFilledTextField, DenseSelect, SecondaryButton } from "../../../Common/StyledComponents";
import { SquareMenuItem } from "../../../FileManager/ContextMenu/ContextMenu";
+import QuestionCircle from "../../../Icons/QuestionCircle";
import SettingForm from "../../../Pages/Setting/SettingForm";
import { Code } from "../../Common/Code";
import { EndpointInput } from "../../Common/EndpointInput";
@@ -348,8 +350,23 @@ const CapabilitiesSection = () => {
-
+
{t("node.remoteDownload")}
+ {
+ window.open("https://docs.cloudreve.org/usage/remote-download", "_blank");
+ }}
+ >
+
+
diff --git a/src/component/Admin/Node/NodeSetting.tsx b/src/component/Admin/Node/NodeSetting.tsx
index 1313c93..358d3d3 100644
--- a/src/component/Admin/Node/NodeSetting.tsx
+++ b/src/component/Admin/Node/NodeSetting.tsx
@@ -1,5 +1,5 @@
import { Add } from "@mui/icons-material";
-import { Box, Container, Grid2 as Grid, Stack, Typography } from "@mui/material";
+import { Box, Container, Grid2 as Grid, IconButton, Stack, Typography } from "@mui/material";
import { useQueryState } from "nuqs";
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
@@ -8,6 +8,7 @@ import { Node } from "../../../api/dashboard";
import { useAppDispatch } from "../../../redux/hooks";
import { SecondaryButton } from "../../Common/StyledComponents";
import ArrowSync from "../../Icons/ArrowSync";
+import QuestionCircle from "../../Icons/QuestionCircle";
import PageContainer from "../../Pages/PageContainer";
import PageHeader from "../../Pages/PageHeader";
import { BorderedCardClickable } from "../Common/AdminCard";
@@ -67,7 +68,14 @@ const NodeSetting = () => {
setCreateNewOpen(false)} />
-
+ window.open("https://docs.cloudreve.org/usage/slave-node", "_blank")}>
+
+
+ }
+ />
}>
{t("node.refresh")}
diff --git a/src/component/Admin/Settings/Filesystem/ViewerSetting/ImportWopiDialog.tsx b/src/component/Admin/Settings/Filesystem/ViewerSetting/ImportWopiDialog.tsx
index dd965c6..8196394 100644
--- a/src/component/Admin/Settings/Filesystem/ViewerSetting/ImportWopiDialog.tsx
+++ b/src/component/Admin/Settings/Filesystem/ViewerSetting/ImportWopiDialog.tsx
@@ -1,12 +1,13 @@
-import { useTranslation } from "react-i18next";
-import { ViewerGroup } from "../../../../../api/explorer.ts";
-import DraggableDialog from "../../../../Dialogs/DraggableDialog.tsx";
+import { DialogContent, Link } from "@mui/material";
import { useCallback, useState } from "react";
-import { useAppDispatch } from "../../../../../redux/hooks.ts";
+import { Trans, useTranslation } from "react-i18next";
import { getWopiDiscovery } from "../../../../../api/api.ts";
-import SettingForm from "../../../../Pages/Setting/SettingForm.tsx";
-import { DialogContent } from "@mui/material";
+import { ViewerGroup } from "../../../../../api/explorer.ts";
+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 { NoMarginHelperText } from "../../Settings.tsx";
export interface ImportWopiDialogProps {
@@ -15,11 +16,7 @@ export interface ImportWopiDialogProps {
onImported: (v: ViewerGroup) => void;
}
-const ImportWopiDialog = ({
- open,
- onClose,
- onImported,
-}: ImportWopiDialogProps) => {
+const ImportWopiDialog = ({ open, onClose, onImported }: ImportWopiDialogProps) => {
const { t } = useTranslation("dashboard");
const dispatch = useAppDispatch();
const [endpoint, setEndpoint] = useState("");
@@ -58,12 +55,14 @@ const ImportWopiDialog = ({
>
- setEndpoint(e.target.value)}
- />
- {t("settings.wopiDes")}
+ setEndpoint(e.target.value)} />
+
+ , ]}
+ />
+
diff --git a/src/component/Admin/Settings/Media/Media.tsx b/src/component/Admin/Settings/Media/Media.tsx
index 7428da4..a0b522f 100644
--- a/src/component/Admin/Settings/Media/Media.tsx
+++ b/src/component/Admin/Settings/Media/Media.tsx
@@ -1,32 +1,15 @@
-import { useTranslation } from "react-i18next";
-import * as React from "react";
-import { useContext } from "react";
-import { SettingContext } from "../SettingWrapper.tsx";
-import {
- Alert,
- Box,
- Collapse,
- FormControlLabel,
- ListItemText,
- Stack,
- Switch,
- Typography,
-} from "@mui/material";
-import {
- NoMarginHelperText,
- SettingSection,
- SettingSectionContent,
-} from "../Settings.tsx";
-import SettingForm from "../../../Pages/Setting/SettingForm.tsx";
-import {
- DenseFilledTextField,
- DenseSelect,
-} from "../../../Common/StyledComponents.tsx";
+import { Alert, Box, Collapse, FormControlLabel, Link, ListItemText, Stack, Switch, Typography } from "@mui/material";
import FormControl from "@mui/material/FormControl";
+import { useContext } from "react";
+import { Trans, useTranslation } from "react-i18next";
import { isTrueVal } from "../../../../session/utils.ts";
+import { DenseFilledTextField, DenseSelect } from "../../../Common/StyledComponents.tsx";
import { SquareMenuItem } from "../../../FileManager/ContextMenu/ContextMenu.tsx";
-import Generators from "./Generators.tsx";
+import SettingForm from "../../../Pages/Setting/SettingForm.tsx";
+import { NoMarginHelperText, SettingSection, SettingSectionContent } from "../Settings.tsx";
+import { SettingContext } from "../SettingWrapper.tsx";
import Extractors from "./Extractors.tsx";
+import Generators from "./Generators.tsx";
const Media = () => {
const { t } = useTranslation("dashboard");
@@ -106,7 +89,7 @@ const Media = () => {
{f}
@@ -114,9 +97,7 @@ const Media = () => {
))}
-
- {t("settings.notAppliedToNativeGenerator", { prefix: "" })}
-
+ {t("settings.notAppliedToNativeGenerator", { prefix: "" })}
@@ -156,9 +137,7 @@ const Media = () => {
}
label={t("settings.thumbGC")}
/>
-
- {t("settings.notAppliedToNativeGenerator", { prefix: "" })}
-
+ {t("settings.notAppliedToNativeGenerator", { prefix: "" })}
@@ -168,7 +147,11 @@ const Media = () => {
- {t("settings.generatorProxyWarning")}
+ ]}
+ />
@@ -181,7 +164,11 @@ const Media = () => {
- {t("settings.extractMediaMetaDes")}
+ ]}
+ />
diff --git a/src/component/Admin/StoragePolicy/SelectProvider.tsx b/src/component/Admin/StoragePolicy/SelectProvider.tsx
index 7099eb6..fe3bc5c 100644
--- a/src/component/Admin/StoragePolicy/SelectProvider.tsx
+++ b/src/component/Admin/StoragePolicy/SelectProvider.tsx
@@ -1,7 +1,19 @@
-import { Card, CardActionArea, CardContent, CardMedia, DialogContent, Grid2, styled, Typography } from "@mui/material";
+import {
+ Card,
+ CardActionArea,
+ CardContent,
+ CardMedia,
+ DialogActions,
+ DialogContent,
+ Grid2,
+ styled,
+ Typography,
+} from "@mui/material";
import { useTranslation } from "react-i18next";
import { PolicyType } from "../../../api/explorer";
+import { SecondaryButton } from "../../Common/StyledComponents";
import DraggableDialog from "../../Dialogs/DraggableDialog";
+import Open from "../../Icons/Open";
import { PolicyPropsMap } from "./StoragePolicySetting";
export interface SelectProviderProps {
@@ -46,6 +58,15 @@ const SelectProvider = ({ open, onClose, onSelect }: SelectProviderProps) => {
))}
+
+ }
+ variant="contained"
+ onClick={() => window.open("https://docs.cloudreve.org/usage/storage/", "_blank")}
+ >
+ {t("policy.compare")}
+
+
);
};
diff --git a/src/component/Icons/CommentMultiple.tsx b/src/component/Icons/CommentMultiple.tsx
new file mode 100644
index 0000000..90afcb7
--- /dev/null
+++ b/src/component/Icons/CommentMultiple.tsx
@@ -0,0 +1,9 @@
+import { SvgIcon, SvgIconProps } from "@mui/material";
+
+export default function CommentMultiple(props: SvgIconProps) {
+ return (
+
+
+
+ );
+}
diff --git a/src/component/Icons/QuestionCircle.tsx b/src/component/Icons/QuestionCircle.tsx
new file mode 100644
index 0000000..89fce2e
--- /dev/null
+++ b/src/component/Icons/QuestionCircle.tsx
@@ -0,0 +1,9 @@
+import { SvgIcon, SvgIconProps } from "@mui/material";
+
+export default function QuestionCircle(props: SvgIconProps) {
+ return (
+
+
+
+ );
+}
diff --git a/src/component/Icons/Telegram.tsx b/src/component/Icons/Telegram.tsx
new file mode 100644
index 0000000..0f80d47
--- /dev/null
+++ b/src/component/Icons/Telegram.tsx
@@ -0,0 +1,9 @@
+import { SvgIcon, SvgIconProps } from "@mui/material";
+
+export default function Telegram(props: SvgIconProps) {
+ return (
+
+
+
+ );
+}