From 4dbc802972c930f5f42fc27507fac35c28c42afd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=AD=E3=82=89=E3=81=B2=E3=81=8B=E3=81=A0?= Date: Sat, 25 Nov 2023 21:29:43 +0900 Subject: [PATCH 01/12] fix: fix typo (#2843) --- frontend/src/views/settings/User.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/views/settings/User.vue b/frontend/src/views/settings/User.vue index b3e3602d..eea802c0 100644 --- a/frontend/src/views/settings/User.vue +++ b/frontend/src/views/settings/User.vue @@ -110,7 +110,7 @@ export default { this.user = { ...defaults, username: "", - passsword: "", + password: "", rules: [], lockPassword: false, id: 0, From a09dfa8d9f190243d811a841de44c4abb4403d87 Mon Sep 17 00:00:00 2001 From: M A E R Y O Date: Sat, 25 Nov 2023 21:35:00 +0900 Subject: [PATCH 02/12] feat: display image resolutions in file details (#2830) --------- Co-authored-by: MAERYO --- files/file.go | 44 ++++++++++++++++++++++++ frontend/src/components/prompts/Info.vue | 19 ++++++++++ frontend/src/i18n/en.json | 3 +- 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/files/file.go b/files/file.go index e0fdb162..f181f185 100644 --- a/files/file.go +++ b/files/file.go @@ -7,6 +7,7 @@ import ( "crypto/sha512" "encoding/hex" "hash" + "image" "io" "log" "mime" @@ -44,6 +45,7 @@ type FileInfo struct { Checksums map[string]string `json:"checksums,omitempty"` Token string `json:"token,omitempty"` currentDir []os.FileInfo `json:"-"` + Resolution *ImageResolution `json:"resolution,omitempty"` } // FileOptions are the options when getting a file info. @@ -58,6 +60,11 @@ type FileOptions struct { Content bool } +type ImageResolution struct { + Width int `json:"width"` + Height int `json:"height"` +} + // NewFileInfo creates a File object from a path and a given user. This File // object will be automatically filled depending on if it is a directory // or a file. If it's a video file, it will also detect any subtitles. @@ -236,6 +243,12 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error { return nil case strings.HasPrefix(mimetype, "image"): i.Type = "image" + resolution, err := calculateImageResolution(i.Fs, i.Path) + if err != nil { + log.Printf("Error calculating image resolution: %v", err) + } else { + i.Resolution = resolution + } return nil case strings.HasSuffix(mimetype, "pdf"): i.Type = "pdf" @@ -264,6 +277,28 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error { return nil } +func calculateImageResolution(fs afero.Fs, filePath string) (*ImageResolution, error) { + file, err := fs.Open(filePath) + if err != nil { + return nil, err + } + defer func() { + if cErr := file.Close(); cErr != nil { + log.Printf("Failed to close file: %v", cErr) + } + }() + + config, _, err := image.DecodeConfig(file) + if err != nil { + return nil, err + } + + return &ImageResolution{ + Width: config.Width, + Height: config.Height, + }, nil +} + func (i *FileInfo) readFirstBytes() []byte { reader, err := i.Fs.Open(i.Path) if err != nil { @@ -361,6 +396,15 @@ func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error { currentDir: dir, } + if !file.IsDir && strings.HasPrefix(mime.TypeByExtension(file.Extension), "image/") { + resolution, err := calculateImageResolution(file.Fs, file.Path) + if err != nil { + log.Printf("Error calculating resolution for image %s: %v", file.Path, err) + } else { + file.Resolution = resolution + } + } + if file.IsDir { listing.NumDirs++ } else { diff --git a/frontend/src/components/prompts/Info.vue b/frontend/src/components/prompts/Info.vue index 78227821..03bbfb58 100644 --- a/frontend/src/components/prompts/Info.vue +++ b/frontend/src/components/prompts/Info.vue @@ -12,10 +12,17 @@

{{ $t("prompts.displayName") }} {{ name }}

+

{{ $t("prompts.size") }}: {{ humanSize }}

+ +
+ {{ $t("prompts.resolution") }}: + {{ resolution.width }} x {{ resolution.height }} +
+

{{ $t("prompts.lastModified") }}: {{ humanTime }}

@@ -126,6 +133,18 @@ export default { : this.req.items[this.selected[0]].isDir) ); }, + resolution: function() { + if (this.selectedCount === 1) { + const selectedItem = this.req.items[this.selected[0]]; + if (selectedItem && selectedItem.type === 'image') { + return selectedItem.resolution; + } + } + else if (this.req && this.req.type === 'image') { + return this.req.resolution; + } + return null; + }, }, methods: { checksum: async function (event, algo) { diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 9889f880..8e392694 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -161,7 +161,8 @@ "upload": "Upload", "uploadFiles": "Uploading {files} files...", "uploadMessage": "Select an option to upload.", - "optionalPassword": "Optional password" + "optionalPassword": "Optional password", + "resolution": "Resolution" }, "search": { "images": "Images", From fc2ee373536584d024f7def62f350bdbb712d927 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 6 Dec 2023 11:09:33 +0100 Subject: [PATCH 03/12] build(deps-dev): bump vite from 4.4.9 to 4.4.12 in /frontend (#2862) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 4.4.9 to 4.4.12. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v4.4.12/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v4.4.12/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/package-lock.json | 8 ++++---- frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ff54d3d6..d898e595 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -46,7 +46,7 @@ "postcss": "^8.4.31", "prettier": "^3.0.1", "terser": "^5.19.2", - "vite": "^4.4.9", + "vite": "^4.4.12", "vite-plugin-compression2": "^0.10.3", "vite-plugin-rewrite-all": "^1.0.1" } @@ -5663,9 +5663,9 @@ "dev": true }, "node_modules/vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.12.tgz", + "integrity": "sha512-KtPlUbWfxzGVul8Nut8Gw2Qe8sBzWY+8QVc5SL8iRFnpnrcoCaNlzO40c1R6hPmcdTwIPEDkq0Y9+27a5tVbdQ==", "dev": true, "dependencies": { "esbuild": "^0.18.10", diff --git a/frontend/package.json b/frontend/package.json index bea7fed0..4449a5f5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -52,7 +52,7 @@ "postcss": "^8.4.31", "prettier": "^3.0.1", "terser": "^5.19.2", - "vite": "^4.4.9", + "vite": "^4.4.12", "vite-plugin-compression2": "^0.10.3", "vite-plugin-rewrite-all": "^1.0.1" }, From 391a078cd486e618c95a0c5850326076cbc025b6 Mon Sep 17 00:00:00 2001 From: Fritz Lin Date: Wed, 6 Dec 2023 18:19:30 +0800 Subject: [PATCH 04/12] feat: make user session timeout configurable by flags (#2845) --- cmd/root.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmd/root.go b/cmd/root.go index dc8b57e8..7ec4d441 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -64,6 +64,7 @@ func addServerFlags(flags *pflag.FlagSet) { flags.Uint32("socket-perm", 0666, "unix socket file permissions") //nolint:gomnd flags.StringP("baseurl", "b", "", "base url") flags.String("cache-dir", "", "file cache directory (disabled if empty)") + flags.String("token-expiration-time", "2h", "user session timeout") flags.Int("img-processors", 4, "image processors count") //nolint:gomnd flags.Bool("disable-thumbnails", false, "disable image thumbnails") flags.Bool("disable-preview-resize", false, "disable resize of image previews") @@ -261,6 +262,10 @@ func getRunParams(flags *pflag.FlagSet, st *storage.Storage) *settings.Server { _, disableExec := getParamB(flags, "disable-exec") server.EnableExec = !disableExec + if val, set := getParamB(flags, "token-expiration-time"); set { + server.TokenExpirationTime = val + } + return server } From cfafefa35a81c09f1ed5a4cf81b65a655ce519fc Mon Sep 17 00:00:00 2001 From: Omar Hussein Date: Wed, 6 Dec 2023 05:21:04 -0500 Subject: [PATCH 05/12] chore: update Arabic and English translations (#2823) --- frontend/src/i18n/ar.json | 201 +++++++++++++++++++++----------------- frontend/src/i18n/en.json | 26 ++--- 2 files changed, 126 insertions(+), 101 deletions(-) diff --git a/frontend/src/i18n/ar.json b/frontend/src/i18n/ar.json index 443b30e3..2fd3b880 100644 --- a/frontend/src/i18n/ar.json +++ b/frontend/src/i18n/ar.json @@ -5,10 +5,13 @@ "copy": "نسخ", "copyFile": "نسخ الملف", "copyToClipboard": "نسخ الى الحافظة", + "copyDownloadLinkToClipboard": "نسخ رابط التحميل الى الحافظة", "create": "إنشاء", "delete": "حذف", "download": "تحميل", - "hideDotfiles": "", + "file": "ملف", + "folder": "مجلد", + "hideDotfiles": "إخفاء ملفات النقطة", "info": "معلومات", "more": "المزيد", "move": "نقل", @@ -16,7 +19,7 @@ "new": "جديد", "next": "التالي", "ok": "موافق", - "permalink": "الحصول على لنك دائم", + "permalink": "الحصول على رابط دائم", "previous": "السابق", "publish": "نشر", "rename": "إعادة تسمية", @@ -28,21 +31,28 @@ "select": "تحديد", "selectMultiple": "تحديد متعدد", "share": "مشاركة", - "shell": "Toggle shell", + "shell": "تفعيل/إغلاق واجهة اﻷوامر (shell)", + "submit": "تسليم", "switchView": "تغيير العرض", "toggleSidebar": "تبديل الشريط الجانبي", "update": "تحديث", - "upload": "رفع" + "upload": "رفع", + "openFile": "فتح الملف", + "continue": "متابعة" }, "download": { - "downloadFile": "Download File", - "downloadFolder": "Download Folder", - "downloadSelected": "" + "downloadFile": "تحميل الملف", + "downloadFolder": "تحميل المجلد", + "downloadSelected": "تحميل الملفات المحددة" + }, + "upload": { + "abortUpload": "هل تريد بالتاكيد إلغاء الرفع؟" }, "errors": { - "forbidden": "You don't have permissions to access this.", + "forbidden": "ليست لديك الصلاحيات للوصول لهذا المحتوى.", "internal": "لقد حدث خطأ ما.", - "notFound": "لا يمكن الوصول لهذا المحتوى." + "notFound": "لا يمكن الوصول لهذا المحتوى.", + "connection": "لا يمكن اﻹتصال بالخادم." }, "files": { "body": "الصفحة", @@ -50,17 +60,18 @@ "closePreview": "إغلاق العرض", "files": "الملفات", "folders": "المجلدات", - "home": "الصفحة الاولى", + "home": "الصفحة الرئيسية", "lastModified": "آخر تعديل", "loading": "جاري التحميل...", "lonely": "تبدو وحيدا هنا...", - "metadata": "بيانات تعريفية", + "metadata": "بيانات وصفية", "multipleSelectionEnabled": "التحديد المتعدد مفعل", - "name": "الإسم", + "name": "اﻹسم", "size": "الحجم", "sortByLastModified": "الترتيب بآخر تعديل", - "sortByName": "الترتيب بالإسم", - "sortBySize": "الترتيب بالحجم" + "sortByName": "الترتيب باﻹسم", + "sortBySize": "الترتيب بالحجم", + "noPreview": "لا يوجد عرض مسبق لهذا الملف." }, "help": { "click": "حدد الملف أو المجلد", @@ -71,7 +82,7 @@ }, "del": "حذف البيانات المحددة", "doubleClick": "فتح المجلد او الملف", - "esc": "مسح التحديد وإغلاق النافذة المنبثقة", + "esc": "مسح التحديد و إغلاق النافذة المنبثقة", "f1": "هذه المعلومات", "f2": "إعادة تسمية الملف", "help": "مساعدة" @@ -81,47 +92,49 @@ "hu": "Magyar", "ar": "العربية", "de": "Deutsch", + "el": "Ελληνικά", "en": "English", "es": "Español", "fr": "Français", - "is": "", + "is": "Icelandic", "it": "Italiano", "ja": "日本語", "ko": "한국어", - "nlBE": "", + "nlBE": "Dutch (Belgium)", "pl": "Polski", "pt": "Português", "ptBR": "Português (Brasil)", - "ro": "", + "ro": "Romanian", "ru": "Русский", "sk": "Slovenčina", - "svSE": "", - "tr" : "Türkçe", + "svSE": "Swedish (Sweden)", + "tr": "Türkçe", "ua": "Українська", "zhCN": "中文 (简体)", "zhTW": "中文 (繁體)" }, "login": { - "createAnAccount": "Create an account", - "loginInstead": "Already have an account", + "createAnAccount": "إنشاء حساب جديد", + "loginInstead": "هل لديك حساب", "password": "كلمة المرور", - "passwordConfirm": "Password Confirmation", - "passwordsDontMatch": "Passwords don't match", - "signup": "Signup", + "passwordConfirm": "تأكيد كلمة المرور", + "passwordsDontMatch": "كلمة المرور غير متطابقة", + "signup": "إشترك", "submit": "تسجيل دخول", "username": "إسم المستخدم", - "usernameTaken": "Username already taken", + "usernameTaken": "إسم المستخدم غير متاح", "wrongCredentials": "بيانات دخول خاطئة" }, "permanent": "دائم", "prompts": { "copy": "نسخ", - "copyMessage": "رجاء حدد المكان لنسخ ملفاتك فيه:", - "currentlyNavigating": "يتم الإنتقال حاليا إلى:", + "copyMessage": "حدد المكان لنسخ ملفاتك فيه:", + "currentlyNavigating": "يتم اﻹنتقال حاليا إلى:", "deleteMessageMultiple": "هل تريد بالتأكيد حذف {count} ملف؟", "deleteMessageSingle": "هل تريد بالتأكيد حذف هذا الملف/المجلد؟", + "deleteMessageShare": "هل تريد بالتأكيد إلغاء مشاركة هذا الملف/المجلد ({path})؟", "deleteTitle": "حذف الملفات", - "displayName": "الإسم:", + "displayName": "عرض اﻹسم:", "download": "تحميل الملفات", "downloadMessage": "حدد إمتداد الملف المراد تحميله.", "error": "لقد حدث خطأ ما", @@ -130,81 +143,90 @@ "lastModified": "آخر تعديل", "move": "نقل", "moveMessage": "إختر مكان جديد للملفات أو المجلدات المراد نقلها:", - "newArchetype": "إنشاء منشور من المنشور الأصلي. الملف سيتم انشاءه في مجلد المحتويات.", + "newArchetype": "إنشاء منشور من المنشور اﻷصلي. الملف سيتم انشاءه في مجلد المحتويات.", "newDir": "مجلد جديد", - "newDirMessage": "رجاء أدخل اسم المجلد الجديد.", + "newDirMessage": "أدخل اسم المجلد الجديد.", "newFile": "ملف جديد", - "newFileMessage": "رجاء ادخل اسم الملف الجديد.", + "newFileMessage": "ادخل اسم الملف الجديد.", "numberDirs": "عدد المجلدات", "numberFiles": "عدد الملفات", "rename": "إعادة تسمية", "renameMessage": "إدراج اسم جديد لـ", "replace": "إستبدال", - "replaceMessage": "أحد الملفات التي تحاول رفعها يتعارض مع ملف موجود بنفس الإسم. هل تريد إستبدال الملف الموجود؟\n", + "replaceMessage": "أحد الملفات التي تحاول رفعها يتعارض مع ملف موجود بنفس اﻹسم. هل المتابعة مع تخطي هذا الملف ام تريد إستبدال الملف الموجود؟\n", "schedule": "جدولة", - "scheduleMessage": "أختر الوقت والتاريخ لجدولة نشر هذا المقال.", + "scheduleMessage": "أختر الوقت و التاريخ لجدولة نشر هذا المقال.", "show": "عرض", "size": "الحجم", - "upload": "", - "uploadMessage": "" + "upload": "رفع", + "uploadFiles": "يتم رفع {files} ملفات.", + "uploadMessage": "إختر الملفات التي تريد رفعها.", + "optionalPassword": "كلمة مرور إختيارية" }, "search": { "images": "الصور", "music": "الموسيقى", "pdf": "PDF", - "pressToSearch": "Press enter to search...", + "pressToSearch": "أضغط زر اﻹدخال للبحث...", "search": "البحث...", - "typeToSearch": "Type to search...", - "types": "الأنواع", + "typeToSearch": "اكتب للبحث...", + "types": "اﻷنواع", "video": "فيديوهات" }, "settings": { - "admin": "Admin", - "administrator": "Administrator", - "allowCommands": "تنفيذ الأوامر", - "allowEdit": "تعديل، إعادة تسمية وحذف الملفات والمجلدات", - "allowNew": "إنشاء ملفات ومجلدات جديدة", - "allowPublish": "نشر مقالات وصفحات جديدة", - "allowSignup": "Allow users to signup", + "admin": "إدارة", + "administrator": "مدير", + "allowCommands": "تنفيذ اﻷوامر", + "allowEdit": "تعديل، إعادة تسمية و حذف الملفات و المجلدات", + "allowNew": "إنشاء ملفات و مجلدات جديدة", + "allowPublish": "نشر مقالات و صفحات جديدة", + "allowSignup": "اسمح للمستخدمين بالاشتراك", "avoidChanges": "(أتركه فارغاً إن لم ترد تغييره)", - "branding": "Branding", - "brandingDirectoryPath": "Branding directory path", - "brandingHelp": "You can customize how your File Browser instance looks and feels by changing its name, replacing the logo, adding custom styles and even disable external links to GitHub.\nFor more information about custom branding, please check out the {0}.", + "branding": "الشعار", + "brandingDirectoryPath": "مسار مجلد الشعار", + "brandingHelp": "بإمكانك ان تخصص شكل و مظهر متصفح الملفات الخاص بك عن طريق تغيير اسمه، او تغيير الشعار، او اضافة ستايل مخصص، او حتى تعطيل الروابط الخارجية لـ GitHub.\nلمزيد من المعلومات حول التخصيص، يرجى الاطلاع على {0}.", "changePassword": "تغيير كلمة المرور", - "commandRunner": "Command runner", - "commandRunnerHelp": "Here you can set commands that are executed in the named events. You must write one per line. The environment variables {0} and {1} will be available, being {0} relative to {1}. For more information about this feature and the available environment variables, please read the {2}.", - "commandsUpdated": "تم تحديث الأوامر", - "createUserDir": "Auto create user home dir while adding new user", + "commandRunner": "منفذ اﻷوامر", + "commandRunnerHelp": "هنا بإمكانك تعيين اﻷوامر التي سيتم تنفيذها في اﻷحداث المسماة. يجب كتابة أمر واحد في كل سطر. ستكون المتغيرات البيئية (env) {0} و {1} متاحة، حيث {0} نسبي لـ {1}. لمزيد من المعلومات حول هذه الميزة و المتغيرات البيئية المتاحة، يرجى قراءة {2}.", + "commandsUpdated": "تم تحديث اﻷوامر", + "createUserDir": "إنشاء مجلد المستخدم (home) تلقائياً عند إنشاء مستخدم جديد", + "tusUploads": "التحميلات المتقطعة", + "tusUploadsHelp": "يدعم متصفح الملفات تحميل الملفات المتقطعة، مما يسمح بتحميلات الملفات بشكل فعال و موثوق و قابلة للمتابغة و متقطعة حتى على الشبكات غير الموثوقة.", + "tusUploadsChunkSize": "يشير إلى الحد اﻷقصى لحجم الطلب (سيتم استخدام التحميل المباشر للتحميلات صغيرة الخحم). يمكنك إدخال عدد صحيح عادي يدل على الحجم بوحدة البايت أو نمظ مثل10MB, 1GB, إلخ.", + "tusUploadsRetryCount": "عدد مرات إعادة المحاولة إذا فشلت عملية تحميل القطعة.", + "userHomeBasePath": "المسار الرئيسي لمجلد المستخدم (home)", + "userScopeGenerationPlaceholder": "سيتم تعيين نطاق المستخدم تلقائياً", + "createUserHomeDirectory": "إنشاء مجلد المستخدم (home)", "customStylesheet": "ستايل مخصص", - "defaultUserDescription": "This are the default settings for new users.", - "disableExternalLinks": "Disable external links (except documentation)", - "disableUsedDiskPercentage": "Disable used disk percentage graph", - "documentation": "documentation", + "defaultUserDescription": "هذه اﻹعدادات اﻹفتراضية للمستخدمين الجدد.", + "disableExternalLinks": "تعطيل الروابط الخارجية (بإسثناء الوثائق)", + "disableUsedDiskPercentage": "تعطيل الرسم البياني لنسبة القرص المستخدم", + "documentation": "التوثيق", "examples": "أمثلة", - "executeOnShell": "Execute on shell", - "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", - "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override this ones.", + "executeOnShell": "نفيذ اﻷمر على الواجهة (shell)", + "executeOnShellDescription": "يقوم متصفح الملفات بتنفيذ اﻷوامر عن طريق استدعاء البرامج المنفذة مباشرة. إذا كنت تريد تشغيلها عن ظريق واجهة اﻷوامر (shell) مثل Bash أو PowerShell، يمكنك تعريفها هنا مع الوسائظ (arguments) المطلوبة. إذا تم تعيينها، سيتم إضافة اﻷمر الذي تقوم بتنفيذه كوسيط. ينطبق هذا على كل من أوامر المستخدم روابظ الحدث (hooks).", + "globalRules": "هذه مجموعة من القواعد العامة للسماح و المنع. تطبق على كل المستخدمين. يمكنك تحديد قواعد محددة لكل مستخدم لتجاوز القواعد الغامة.", "globalSettings": "إعدادات عامة", - "hideDotfiles": "", - "insertPath": "Insert the path", - "insertRegex": "Insert regex expression", - "instanceName": "Instance name", + "hideDotfiles": "إخفاء ملفات النقطة", + "insertPath": "ادخل المسار", + "insertRegex": "ادخل تعبيراً منطقياً (regex)", + "instanceName": "اسم النسخة", "language": "اللغة", "lockPassword": "منع المستخدم من تغيير كلمة المرور", "newPassword": "كلمة المرور الجديدة", "newPasswordConfirm": "تأكيد كلمة المرور", "newUser": "مستخدم جديد", "password": "كلمة المرور", - "passwordUpdated": "تم تغيير كلمة المرور", - "path": "", + "passwordUpdated": "تم تغيير كلمة المرور!", + "path": "المسار", "perm": { - "create": "Create files and directories", - "delete": "Delete files and directories", - "download": "Download", - "execute": "Execute commands", - "modify": "Edit files", - "rename": "Rename or move files and directories", - "share": "Share files" + "create": "إنشاء ملفات و مجلدات جديدة", + "delete": "حذف ملفات و مجلدات", + "download": "تحميل", + "execute": "تنفيذ اﻷوامر", + "modify": "تعديل محتويات الملفات", + "rename": "إعادة تسمية او نقل ملفات و مجلدات", + "share": "مشاركة ملفات" }, "permissions": "الصلاحيات", "permissionsHelp": "يمكنك تعيين المستخدم كـ \"مدير\" أو تحديد الصلاحيات بشكل منفرد.\n إذا قمت بتحديد المستخدم كـ \"مدير\"، باقي الخيارات سيتم تحديدها تلقائياً.\n إدارة المستخدمين تبقى صلاحية فريدة للـ \"مدير\" فقط.\n", @@ -212,22 +234,24 @@ "ruleExample1": "منع الوصول إلى الملفات التي تبدأ بنقطة مثل (.git، و .gitignore) في كل مجلد.\n", "ruleExample2": "منع الوصول إلى الملف المسمى Caddyfile في نطاق الجذر.", "rules": "المجموعات", - "rulesHelp": "يمكنك هنا تحديد مجموعة من شروط السماح والمنع لهذا المستخدم. الملفات الممنوعة لن تظهر ضمن القائمة لهذا المستخدم ولن يستطيع الوصول لها. هنا ندعم الـ regex والـ relative path لنطاق المستخدمين.\n", + "rulesHelp": "يمكنك هنا تحديد مجموعة من شروط السماح و المنع لهذا المستخدم. الملفات الممنوعة لن تظهر ضمن القائمة لهذا المستخدم و لن يستطيع الوصول لها. هنا ندعم الـ regex و الـ relative path لنطاق المستخدمين.\n", "scope": "نطاق", - "settingsUpdated": "تم تعديل الإعدادات", - "shareDuration": "", - "shareManagement": "", - "singleClick": "", + "setDateFormat": "حدد تنسيق التاريخ", + "settingsUpdated": "تم تعديل اﻹعدادات", + "shareDuration": "مدة المشاركة", + "shareManagement": "إدارة المشاركات", + "shareDeleted": "تم حذف المشاركة!", + "singleClick": "استخدم النقرة الواحدة لفتح الملفات", "themes": { - "dark": "", - "light": "", - "title": "" + "dark": "غامق", + "light": "فاتح", + "title": "موضوع" }, "user": "المستخدم", - "userCommands": "الأوامر", - "userCommandsHelp": "الأوامر المتاحة لهذا المستخدم مفصولة فيما بينها بمسافة. مثال:\n", + "userCommands": "اﻷوامر", + "userCommandsHelp": "اﻷوامر المتاحة لهذا المستخدم مفصولة فيما بينها بمسافة. مثال:\n", "userCreated": "تم إنشاء المستخدم", - "userDefaults": "User default settings", + "userDefaults": "إعدادات المستخدم اﻹفتراضية", "userDeleted": "تم حذف المستخدم", "userManagement": "إدارة المستخدمين", "userUpdated": "تم تعديل المستخدم", @@ -237,14 +261,14 @@ "sidebar": { "help": "مساعدة", "hugoNew": "هيوجو جديد", - "login": "Login", + "login": "تسجيل دخول", "logout": "تسجيل خروج", "myFiles": "ملفاتي", "newFile": "ملف جديد", "newFolder": "مجلد جديد", - "preview": "معاينة", - "settings": "الإعدادات", - "signup": "Signup", + "preview": "عرض مسبق", + "settings": "اﻹعدادات", + "signup": "إشتراك", "siteSettings": "إعدادات الموقع" }, "success": { @@ -258,3 +282,4 @@ "unit": "وحدة الوقت" } } + diff --git a/frontend/src/i18n/en.json b/frontend/src/i18n/en.json index 8e392694..01c98b4b 100644 --- a/frontend/src/i18n/en.json +++ b/frontend/src/i18n/en.json @@ -46,7 +46,7 @@ "downloadSelected": "Download Selected" }, "upload": { - "abortUpload": "Are you sure you want to abort?" + "abortUpload": "Are you sure you wish to abort?" }, "errors": { "forbidden": "You don't have permissions to access this.", @@ -128,32 +128,32 @@ "permanent": "Permanent", "prompts": { "copy": "Copy", - "copyMessage": "Choose the place to copy your files:", + "copyMessage": "Choose the location to copy your files to:", "currentlyNavigating": "Currently navigating on:", - "deleteMessageMultiple": "Are you sure you want to delete {count} file(s)?", - "deleteMessageSingle": "Are you sure you want to delete this file/folder?", - "deleteMessageShare": "Are you sure you want to delete this share({path})?", + "deleteMessageMultiple": "Are you sure you wish to delete {count} file(s)?", + "deleteMessageSingle": "Are you sure you wish to delete this file/folder?", + "deleteMessageShare": "Are you sure you wish to delete this share({path})?", "deleteTitle": "Delete files", "displayName": "Display Name:", "download": "Download files", - "downloadMessage": "Choose the format you want to download.", + "downloadMessage": "Choose the format you wish to download.", "error": "Something went wrong", "fileInfo": "File information", "filesSelected": "{count} files selected.", "lastModified": "Last Modified", "move": "Move", - "moveMessage": "Choose new house for your file(s)/folder(s):", + "moveMessage": "Choose new home for your file(s)/folder(s):", "newArchetype": "Create a new post based on an archetype. Your file will be created on content folder.", "newDir": "New directory", - "newDirMessage": "Write the name of the new directory.", + "newDirMessage": "Name your new directory.", "newFile": "New file", - "newFileMessage": "Write the name of the new file.", + "newFileMessage": "Name your new file.", "numberDirs": "Number of directories", "numberFiles": "Number of files", "rename": "Rename", "renameMessage": "Insert a new name for", "replace": "Replace", - "replaceMessage": "One of the files you're trying to upload is conflicting because of its name. Do you wish to continue to upload or replace the existing one?\n", + "replaceMessage": "One of the files you're trying to upload has a conflicting name. Do you wish to skip this file and continue to upload or replace the existing one?\n", "schedule": "Schedule", "scheduleMessage": "Pick a date and time to schedule the publication of this post.", "show": "Show", @@ -193,7 +193,7 @@ "createUserDir": "Auto create user home dir while adding new user", "tusUploads": "Chunked Uploads", "tusUploadsHelp": "File Browser supports chunked file uploads, allowing for the creation of efficient, reliable, resumable and chunked file uploads even on unreliable networks.", - "tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting a bytes input or a string like 10MB, 1GB etc.", + "tusUploadsChunkSize": "Indicates to maximum size of a request (direct uploads will be used for smaller uploads). You may input a plain integer denoting byte size input or a string like 10MB, 1GB etc.", "tusUploadsRetryCount": "Number of retries to perform if a chunk fails to upload.", "userHomeBasePath": "Base path for user home directories", "userScopeGenerationPlaceholder": "The scope will be auto generated", @@ -205,7 +205,7 @@ "documentation": "documentation", "examples": "Examples", "executeOnShell": "Execute on shell", - "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you want to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This apply to both user commands and event hooks.", + "executeOnShellDescription": "By default, File Browser executes the commands by calling their binaries directly. If you wish to run them on a shell instead (such as Bash or PowerShell), you can define it here with the required arguments and flags. If set, the command you execute will be appended as an argument. This applies to both user commands and event hooks.", "globalRules": "This is a global set of allow and disallow rules. They apply to every user. You can define specific rules on each user's settings to override these ones.", "globalSettings": "Global Settings", "hideDotfiles": "Hide dotfiles", @@ -232,7 +232,7 @@ "permissions": "Permissions", "permissionsHelp": "You can set the user to be an administrator or choose the permissions individually. If you select \"Administrator\", all of the other options will be automatically checked. The management of users remains a privilege of an administrator.\n", "profileSettings": "Profile Settings", - "ruleExample1": "prevents the access to any dot file (such as .git, .gitignore) in every folder.\n", + "ruleExample1": "prevents the access to any dotfile (such as .git, .gitignore) in every folder.\n", "ruleExample2": "blocks the access to the file named Caddyfile on the root of the scope.", "rules": "Rules", "rulesHelp": "Here you can define a set of allow and disallow rules for this specific user. The blocked files won't show up in the listings and they wont be accessible to the user. We support regex and paths relative to the users scope.\n", From 821fba41a25ba99d47641f01b10ac51960157888 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:44:24 +0100 Subject: [PATCH 06/12] build(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 (#2890) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.14.0 to 0.17.0. - [Commits](https://github.com/golang/crypto/compare/v0.14.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 415b971f..03560f19 100644 --- a/go.mod +++ b/go.mod @@ -23,9 +23,9 @@ require ( github.com/stretchr/testify v1.8.4 github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce go.etcd.io/bbolt v1.3.7 - golang.org/x/crypto v0.14.0 + golang.org/x/crypto v0.17.0 golang.org/x/image v0.10.0 - golang.org/x/text v0.13.0 + golang.org/x/text v0.14.0 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v2 v2.4.0 ) @@ -60,7 +60,7 @@ require ( github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect + golang.org/x/sys v0.15.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/ini.v1 v1.67.0 // indirect diff --git a/go.sum b/go.sum index 0249856e..34ba7f31 100644 --- a/go.sum +++ b/go.sum @@ -292,8 +292,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -432,8 +432,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= @@ -446,8 +446,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From da595326ee2a2cc761055cc9a00adf1228da9996 Mon Sep 17 00:00:00 2001 From: Shlomo <78599753+ShlomoCode@users.noreply.github.com> Date: Thu, 28 Dec 2023 10:44:58 +0200 Subject: [PATCH 07/12] chore: update he.json (#2877) --- frontend/src/i18n/he.json | 152 +++++++++++++++++++------------------- 1 file changed, 76 insertions(+), 76 deletions(-) diff --git a/frontend/src/i18n/he.json b/frontend/src/i18n/he.json index 630f4f73..6a7dd694 100644 --- a/frontend/src/i18n/he.json +++ b/frontend/src/i18n/he.json @@ -2,45 +2,45 @@ "buttons": { "cancel": "ביטול", "close": "סגירה", - "copy": "העתק", + "copy": "העתקה", "copyFile": "העתק קובץ", "copyToClipboard": "העתק ללוח", - "create": "צור", - "delete": "מחק", - "download": "הורד", + "create": "יצירה", + "delete": "מחיקה", + "download": "הורדה", "file": "קובץ", - "folder": "תקייה", - "hideDotfiles": "הסתר קבצים נסתרים", + "folder": "תיקייה", + "hideDotfiles": "הסתר קבצים/תיקיות ששמם מתחיל בנקודה", "info": "מידע", "more": "עוד", - "move": "העבר", + "move": "העברה", "moveFile": "העבר קובץ", "new": "חדש", "next": "הבא", "ok": "אישור", "permalink": "צור קישור קבוע", "previous": "הקודם", - "publish": "יצירה", - "rename": "שנה שם", - "replace": "החלף", + "publish": "פרסום", + "rename": "שינוי שם", + "replace": "החלפה", "reportIssue": "דווח על תקלה", - "save": "שמור", + "save": "שמירה", "schedule": "תזמון", "search": "חיפוש", - "select": "בחר", + "select": "בחירה", "selectMultiple": "בחירה מרובה", - "share": "שתף", + "share": "שיתוף", "shell": "פתיחת מסוף", "submit": "אישור", - "switchView": "שנה תצוגה", - "toggleSidebar": "פתיחת / סגירת סרגל צד", + "switchView": "שינוי תצוגה", + "toggleSidebar": "פתיחת/סגירת סרגל צד", "update": "עדכון", "upload": "העלאה", "openFile": "פתח קובץ" }, "download": { "downloadFile": "הורד קובץ", - "downloadFolder": "הורד תקייה", + "downloadFolder": "הורד תיקייה", "downloadSelected": "הורד קבצים שנבחרו" }, "errors": { @@ -51,10 +51,10 @@ }, "files": { "body": "גוף", - "clear": "נקה", + "clear": "ניקוי", "closePreview": "סגירת תצוגה מקדימה", "files": "קבצים", - "folders": "תקיות", + "folders": "תיקיות", "home": "ראשי", "lastModified": "שונה לאחרונה", "loading": "טוען...", @@ -69,17 +69,17 @@ "noPreview": "תצוגה מקדימה לא זמינה לקובץ זה" }, "help": { - "click": "בחר קובץ או תקייה", + "click": "בחר קובץ או תיקייה", "ctrl": { - "click": "בחר מספר קבצים או תקיות", + "click": "בחר מספר קבצים או תיקיות", "f": "פותח את החיפוש", - "s": "לשמור קובץ או להוריד את התקייה שבה אתה נמצא" + "s": "לשמור קובץ או להוריד את התיקייה שבה אתה נמצא" }, - "del": "מחק את מה שנבחר", - "doubleClick": "פתח קובץ או תקייה", + "del": "מחק את הבחירה", + "doubleClick": "פתח קובץ או תיקייה", "esc": "נקה את הבחירה ו/או סגור את השדה", "f1": "המידע הזה", - "f2": "שנה שם קובץ", + "f2": "שינוי שם קובץ", "help": "עזרה" }, "languages": { @@ -109,44 +109,44 @@ }, "login": { "createAnAccount": "צור חשבון", - "loginInstead": "חשבון קיים", + "loginInstead": "כבר יש לי חשבון", "password": "סיסמא", "passwordConfirm": "אימות סיסמא", - "passwordsDontMatch": "סיסמאות אינן תואמות", + "passwordsDontMatch": "הסיסמאות אינן תואמות", "signup": "הרשמה", "submit": "התחברות", "username": "שם משתמש", - "usernameTaken": "שם משתמש כבר קיים", + "usernameTaken": "שם המשתמש כבר קיים", "wrongCredentials": "פרטי התחברות שגויים" }, "permanent": "קבוע", "prompts": { - "copy": "העתק", + "copy": "העתקה", "copyMessage": "בחר לאן להעתיק את הקבצים:", "currentlyNavigating": "כרגע מנווט ב:", "deleteMessageMultiple": "האם אתה בטוח שברצונך למחוק {count} קבצים?", - "deleteMessageSingle": "האם אתה בטוח שברצונך למחוק את הקובץ או התקייה?", - "deleteMessageShare": "האם אתה בטוח שברצונך למחוק את השיתוף הזה?({path})?", - "deleteTitle": "מחק קבצים", + "deleteMessageSingle": "האם אתה בטוח שברצונך למחוק את הקובץ/התיקייה?", + "deleteMessageShare": "האם אתה בטוח שברצונך למחוק את השיתוף הזה ({path})?", + "deleteTitle": "מחיקת קבצים", "displayName": "שם:", - "download": "הורד קבצים", + "download": "הורדת קבצים", "downloadMessage": "בחר את הפורמט שברצונך להוריד", "error": "משהו השתבש", "fileInfo": "מידע על הקובץ", "filesSelected": "{count} קבצים נבחרו.", "lastModified": "שונה לאחרונה", - "move": "העבר", - "moveMessage": "בחר מיקום חדש לקובץ / תקייה:", - "newArchetype": "צור פוסט חדש. הקובץ יווצר בתקיית התוכן", - "newDir": "תקייה חדשה", - "newDirMessage": "כתוב את שם התקייה החדשה", + "move": "העברה", + "moveMessage": "בחר מיקום חדש לקובץ/תיקייה:", + "newArchetype": "Create a new post based on an archetype. Your file will be created on content folder", + "newDir": "תיקייה חדשה", + "newDirMessage": "כתוב את שם התיקייה החדשה", "newFile": "קובץ חדש", "newFileMessage": "כתוב את שם הקובץ החדש", - "numberDirs": "מספר התקיות", - "numberFiles": "מספר הקבצים", - "rename": "שנה שם", + "numberDirs": "כמות התיקיות", + "numberFiles": "כמות הקבצים", + "rename": "שינוי שם", "renameMessage": "הכנס שם חדש עבור", - "replace": "החלף", + "replace": "החלפה", "replaceMessage": "אחד הקבצים בעל שם זהה לקובץ קיים, האם ברצונך להחליף את הקובץ הקיים בחדש? זהירות - הקובץ הישן ימחק\n", "schedule": "תזמון", "scheduleMessage": "בחר תאריך ושעה לתזמון הפרסום של פוסט זה.", @@ -161,34 +161,34 @@ "images": "תמונות", "music": "מוזיקה", "pdf": "PDF", - "pressToSearch": "הקש אנטר לחיפוש...", - "search": "חפש...", - "typeToSearch": "הקלד לחיפוש...", - "types": "סוג", + "pressToSearch": "הקש אנטר כדי לחפש...", + "search": "חיפוש...", + "typeToSearch": "הקלד כדי לחפש...", + "types": "סוגים", "video": "וידאו" }, "settings": { "admin": "מנהל", "administrator": "מנהל ראשי", - "allowCommands": "הפעל פקודות", - "allowEdit": "ערוך, שנה שם ומחק קבצים או תקיות", - "allowNew": "צור קבצים ותקיות חדשות", - "allowPublish": "פרסם פוסטים ודפים חדשים", - "allowSignup": "אפשר למשתמשים להירשם", + "allowCommands": "הפעלת פקודות", + "allowEdit": "עריכת, שינוי שם ומחיקת קבצים/תיקיות", + "allowNew": "יצירת קבצים ותיקיות חדשות", + "allowPublish": "פרסום פוסטים ודפים חדשים", + "allowSignup": "אפשר למשתמשים חדשים להירשם", "avoidChanges": "(השאר ריק כדי למנוע שינויים)", "branding": "מיתוג", - "brandingDirectoryPath": "נתיב תקיית מיתוג", + "brandingDirectoryPath": "נתיב תיקיית מיתוג", "brandingHelp": "אתה יכול להגדיר את האופן שבו האפליקציה תראה על ידי שינוי שם האפליקציה, החלפת הלוגו, הוספת עיצוב מותאם אישית ואפילו השבתת קישורים חיצוניים לGithub.\nלמידע נוסף עיין ב-{0}.", - "changePassword": "שנה סיסמא", + "changePassword": "שינוי סיסמא", "commandRunner": "הרצת פקודות", "commandRunnerHelp": "אתה יכול להגדיר פקודות שיבוצעו באירועים שונים. עליך לכתוב אחד בכל שורה. משתני הסביבה {0} ו-{1} יהיו זמינים, בהיותם {0} ביחס ל-{1}. למידע נוסף על תכונה זו ועל משתני הסביבה הזמינים, עיין ב {2}.", - "commandsUpdated": "הפקודות עודכנו.", - "createUserDir": "צור תקיית בית במהלך הוספת משתמש חדש", - "userHomeBasePath": "נתיב ראשי לתקיות הבית של משתמשים", - "userScopeGenerationPlaceholder": "התחום יווצר אוטומטית", - "createUserHomeDirectory": "צור תקיית בית למשתמש", + "commandsUpdated": "הפקודות עודכנו!", + "createUserDir": "צור אוטומטית תיקיית בית בעת הוספת משתמש חדש", + "userHomeBasePath": "נתיב ראשי לתיקיות הבית של משתמשים", + "userScopeGenerationPlaceholder": "ההיקף יווצר אוטומטית", + "createUserHomeDirectory": "צור תיקיית בית למשתמש", "customStylesheet": "עיצוב מותאם אישית (Stylesheet)", - "defaultUserDescription": "אלה הגדרות ברירת המחדל למשתמשים חדשים", + "defaultUserDescription": "הגדרות ברירת המחדל למשתמשים חדשים", "disableExternalLinks": "השבת קישורים חיצוניים (למעט תיעוד)", "documentation": "תיעוד", "examples": "דוגמאות", @@ -196,12 +196,12 @@ "executeOnShellDescription": "כברירת מחדל, האפליקציה מבצעת את הפקודות על ידי הפעלה ישירה לקבצים (הבינארים). אם אתה רוצה להפעיל אותם מתוך מעטפת כלשהי, (לדוגמא מתוך Bash או PowerShell) אתה יכול להגדיר אותם כאן עם הפרמטרים הנדרשים. שים לב שזה יבוצע גם על פקודות משתמש וגם על הוקים (Hooks) לאירועים.", "globalRules": "זוהי קבוצה גלובלית של חוקים והרשאות (מה מותר ומה אסור), הם חלים על כל משתמש. אתה יכול להגדיר כללים ספציפיים בהגדרות של כל משתמש, כדי לעקוף את החוקים הגלובלים.", "globalSettings": "הגדרות גלובליות", - "hideDotfiles": "הסתר קבצים נסתרים", + "hideDotfiles": "הסתר קבצים/תיקיות ששמם מתחיל בנקודה", "insertPath": "הכנס את הנתיב", "insertRegex": "הוסף ביטוי רגולרי", - "instanceName": "שם", + "instanceName": "שם מופע", "language": "שפה", - "lockPassword": "מנע ממשתמש להחליף סיסמא", + "lockPassword": "מנע מהמשתמש להחליף סיסמא", "newPassword": "הסיסמא החדשה שלך", "newPasswordConfirm": "אשר את הסיסמה החדשה שלך", "newUser": "משתמש חדש", @@ -209,28 +209,28 @@ "passwordUpdated": "הסיסמא עודכנה!", "path": "נתיב", "perm": { - "create": "יצירת קבצים ותקיות", - "delete": "מחיקת קבצים ותקיות", - "download": "הורדת קבצים ותקיות", + "create": "יצירת קבצים ותיקיות", + "delete": "מחיקת קבצים ותיקיות", + "download": "הורדת קבצים ותיקיות", "execute": "ביצוע פקודות", "modify": "עריכת קבצים קבצים", - "rename": "שינוי שם או העברת קבצים ותקיות", + "rename": "שינוי שם/העברת קבצים ותיקיות", "share": "שיתוף קבצים" }, "permissions": "הרשאות", "permissionsHelp": "אתה יכול להגדיר את המשתמש להיות מנהל מערכת או לבחור את ההרשאות בנפרד. אם תבחר \"מנהל מערכת\", כל ההרשאות ייבחרו אוטומטית. ניהול המשתמשים נשאר הרשאה של מנהל מערכת.\n", "profileSettings": "הגדרות פרופיל", - "ruleExample1": "מנע גישה לקבצים נסתרים (כל קובץ שמתחיל בנקודה, לדוגמא .git)", - "ruleExample2": "חסימת גישה לקובץ בשם Caddyfile בתחום הראשי.", + "ruleExample1": "מנע גישה לקבצים נסתרים (כל קובץ/תיקייה שמתחיל בנקודה, לדוגמא .git)", + "ruleExample2": "חסימת גישה לקובץ בשם Caddyfile בהיקף הראשי.", "rules": "חוקים", - "rulesHelp": "כאן אתה יכול להגדיר רשימה של כללים למשתמש ספציפי, רשימה שחורה ולבנה. הקבצים החסומים לא יופיעו ברשימת הקבצים ולא יהיו נגישים למשתמש. יש תמיכה בנתיבים (ביחס לתקייה הראשית של המשתמש), וגם בביטוי רגולרי.\n", - "scope": "תחום", + "rulesHelp": "כאן אתה יכול להגדיר רשימה של כללים למשתמש ספציפי, רשימה שחורה ולבנה. הקבצים החסומים לא יופיעו ברשימת הקבצים ולא יהיו נגישים למשתמש. יש תמיכה בנתיבים (ביחס לתיקייה הראשית של המשתמש), וגם בביטוי רגולרי.\n", + "scope": "היקף", "setDateFormat": "הגדר פורמט תאריך", "settingsUpdated": "ההגדרות עודכנו!", "shareDuration": "משך השיתוף", "shareManagement": "ניהול שיתוף", - "shareDeleted": "שיתוף נמחק!", - "singleClick": "השתמש בלחיצות בודדות כדי לפתוח קבצים ותקיות", + "shareDeleted": "השיתוף נמחק!", + "singleClick": "השתמש בלחיצה בודדת כדי לפתוח קובץ/תיקייה", "themes": { "dark": "כהה", "light": "בהיר", @@ -238,10 +238,10 @@ }, "user": "משתמש", "userCommands": "פקודות", - "userCommandsHelp": "רשימה מופרדת עם רווחים עם הפקודות הזמינות עבור משתמש זה. דוגמא:\n", - "userCreated": "משתמש נוצר!", + "userCommandsHelp": "רשימה מופרדת ברווחים של הפקודות הזמינות עבור משתמש זה. דוגמא:\n", + "userCreated": "המשתמש נוצר!", "userDefaults": "הגדרות ברירת מחדל למשתמש", - "userDeleted": "משתמש נמחק!", + "userDeleted": "המשתמש נמחק!", "userManagement": "ניהול משתמש", "userUpdated": "המשתמש עודכן!", "username": "שם משתמש", @@ -254,11 +254,11 @@ "logout": "התנתק", "myFiles": "הקבצים שלי", "newFile": "קובץ חדש", - "newFolder": "תקייה חדשה", + "newFolder": "תיקייה חדשה", "preview": "תצוגה מקדימה", "settings": "הגדרות", "signup": "הרשמה", - "siteSettings": "הגדרות" + "siteSettings": "הגדרות אתר" }, "success": { "linkCopied": "הקישור הועתק!" From 748af7172ce96f0b66c394e88839bd57c194ffc7 Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Thu, 28 Dec 2023 10:52:40 +0200 Subject: [PATCH 08/12] feat: allow setting theme via cli (#2881) --- cmd/config.go | 2 ++ cmd/config_init.go | 1 + cmd/config_set.go | 2 ++ 3 files changed, 5 insertions(+) diff --git a/cmd/config.go b/cmd/config.go index 4287f3c2..ed3cc772 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -42,6 +42,7 @@ func addConfigFlags(flags *pflag.FlagSet) { flags.String("recaptcha.secret", "", "ReCaptcha secret") flags.String("branding.name", "", "replace 'File Browser' by this name") + flags.String("branding.theme", "", "set the theme") flags.String("branding.color", "", "set the theme color") flags.String("branding.files", "", "path to directory with images and custom styles") flags.Bool("branding.disableExternal", false, "disable external links such as GitHub links") @@ -150,6 +151,7 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut fmt.Fprintf(w, "\tDisable external links:\t%t\n", set.Branding.DisableExternal) fmt.Fprintf(w, "\tDisable used disk percentage graph:\t%t\n", set.Branding.DisableUsedPercentage) fmt.Fprintf(w, "\tColor:\t%s\n", set.Branding.Color) + fmt.Fprintf(w, "\tTheme:\t%s\n", set.Branding.Theme) fmt.Fprintln(w, "\nServer:") fmt.Fprintf(w, "\tLog:\t%s\n", ser.Log) fmt.Fprintf(w, "\tPort:\t%s\n", ser.Port) diff --git a/cmd/config_init.go b/cmd/config_init.go index 22d628a1..7d183368 100644 --- a/cmd/config_init.go +++ b/cmd/config_init.go @@ -38,6 +38,7 @@ override the options.`, Name: mustGetString(flags, "branding.name"), DisableExternal: mustGetBool(flags, "branding.disableExternal"), DisableUsedPercentage: mustGetBool(flags, "branding.disableUsedPercentage"), + Theme: mustGetString(flags, "branding.theme"), Files: mustGetString(flags, "branding.files"), }, } diff --git a/cmd/config_set.go b/cmd/config_set.go index 5a02288f..ba800adb 100644 --- a/cmd/config_set.go +++ b/cmd/config_set.go @@ -53,6 +53,8 @@ you want to change. Other options will remain unchanged.`, set.Branding.Name = mustGetString(flags, flag.Name) case "branding.color": set.Branding.Color = mustGetString(flags, flag.Name) + case "branding.theme": + set.Branding.Theme = mustGetString(flags, flag.Name) case "branding.disableExternal": set.Branding.DisableExternal = mustGetBool(flags, flag.Name) case "branding.disableUsedPercentage": From 3264cea8307dca9ab5463dc81f2a10a817eb3d54 Mon Sep 17 00:00:00 2001 From: Shlomo <78599753+ShlomoCode@users.noreply.github.com> Date: Thu, 28 Dec 2023 11:11:53 +0200 Subject: [PATCH 09/12] fix: delete message when delete file from preview --- frontend/src/components/prompts/Delete.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/prompts/Delete.vue b/frontend/src/components/prompts/Delete.vue index 8e319846..f65e69b7 100644 --- a/frontend/src/components/prompts/Delete.vue +++ b/frontend/src/components/prompts/Delete.vue @@ -1,7 +1,7 @@