diff --git a/CHANGELOG.md b/CHANGELOG.md index 800977ce..5b44dfc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [2.19.0](https://github.com/filebrowser/filebrowser/compare/v2.18.0...v2.19.0) (2021-11-24) + + +### Features + +* prefetch previous and next images in preview. ([#1627](https://github.com/filebrowser/filebrowser/issues/1627)) ([7401d16](https://github.com/filebrowser/filebrowser/commit/7401d16e457bb232fd7dd7ef427e8960d465705c)) + + +### Bug Fixes + +* empty file listing on share ([e082397](https://github.com/filebrowser/filebrowser/commit/e08239781f61e7bb25d9b8c5c6cce90f34621a76)) +* relative font sizes ([c29698d](https://github.com/filebrowser/filebrowser/commit/c29698dffac769077ab7c7869569a902979ee3d7)) + ## [2.18.0](https://github.com/filebrowser/filebrowser/compare/v2.17.2...v2.18.0) (2021-10-31) diff --git a/frontend/src/components/files/ListingItem.vue b/frontend/src/components/files/ListingItem.vue index 3cccfcdd..bf54e3e8 100644 --- a/frontend/src/components/files/ListingItem.vue +++ b/frontend/src/components/files/ListingItem.vue @@ -189,7 +189,7 @@ export default { return filesize(this.size); }, humanTime: function () { - if (this.user.dateFormat) { + if (this.readOnly == undefined && this.user.dateFormat) { return moment(this.modified).format("L LT"); } return moment(this.modified).fromNow(); diff --git a/frontend/src/css/fonts.css b/frontend/src/css/fonts.css index b986f291..cd1474f7 100644 --- a/frontend/src/css/fonts.css +++ b/frontend/src/css/fonts.css @@ -167,3 +167,7 @@ } @import "~material-design-icons/iconfont/material-icons.css"; + +.material-icons { + font-size: 1.5rem; +} \ No newline at end of file diff --git a/frontend/src/css/styles.css b/frontend/src/css/styles.css index 9931bcf1..5bcfe703 100644 --- a/frontend/src/css/styles.css +++ b/frontend/src/css/styles.css @@ -314,11 +314,11 @@ main .spinner .bounce2 { } #editor-container .breadcrumbs span { - font-size: 12px; + font-size: .75rem; } #editor-container .breadcrumbs i { - font-size: 16px; + font-size: 1rem; } /* * * * * * * * * * * * * * * * @@ -334,7 +334,7 @@ main .spinner .bounce2 { background: rgba(0, 0, 0, 0.05); border: 1px solid rgba(0,0,0,0.1); box-shadow: 0 0 0 0; - font-size: 14px; + font-size: 1rem; } /* * * * * * * * * * * * * * * * diff --git a/frontend/src/i18n/zh_CN.json b/frontend/src/i18n/zh_CN.json index 92156c43..a30d6e9b 100644 --- a/frontend/src/i18n/zh_CN.json +++ b/frontend/src/i18n/zh_CN.json @@ -17,10 +17,9 @@ "more": "更多", "move": "移动", "moveFile": "移动文件", - "new": "新", + "new": "新建", "next": "下一个", "ok": "确定", - "openFile": "打开文件", "permalink": "获取永久链接", "permissions": "权限", "previous": "上一个", @@ -34,13 +33,14 @@ "select": "选择", "selectMultiple": "选择多个", "share": "分享", - "shell": "激活 shell", + "shell": "激活 Shell", "submit": "提交", "switchView": "切换显示方式", "toggleSidebar": "切换侧边栏", "unarchive": "解压缩", "update": "更新", - "upload": "上传" + "upload": "上传", + "openFile": "打开文件" }, "download": { "downloadFile": "下载文件", @@ -73,11 +73,11 @@ "metadata": "元数据", "multipleSelectionEnabled": "多选模式已开启", "name": "名称", - "noPreview": "Preview is not available for this file.", "size": "大小", "sortByLastModified": "按最后修改时间排序", "sortByName": "按名称排序", - "sortBySize": "按大小排序" + "sortBySize": "按大小排序", + "noPreview": "此文件无法预览。" }, "help": { "click": "选择文件或目录", @@ -164,7 +164,7 @@ "rename": "重命名", "renameMessage": "请输入新名称,旧名称为:", "replace": "替换", - "replaceMessage": "您尝试上传的文件中有一个与现有文件的名称存在冲突。是否替换现有的同名文件?", + "replaceMessage": "您尝试上传的文件中有一个与现有文件的名称存在冲突。是否替换现有的同名文件?\n", "schedule": "计划", "scheduleMessage": "请选择发布这篇帖子的日期与时间。", "show": "点击以显示", @@ -186,7 +186,7 @@ "images": "图像", "music": "音乐", "pdf": "PDF", - "pressToSearch": "回车搜索...", + "pressToSearch": "输入回车以搜索...", "search": "搜索...", "types": "类型", "typeToSearch": "输入搜索...", @@ -195,7 +195,7 @@ "settings": { "admin": "管理员", "administrator": "管理员", - "allowCommands": "执行命令(shell 命令)", + "allowCommands": "执行命令(Shell 命令)", "allowEdit": "编辑、重命名或删除文件/目录", "allowNew": "创建新文件和目录", "allowPublish": "发布新的帖子与页面", @@ -203,10 +203,10 @@ "avoidChanges": "(留空以避免更改)", "branding": "品牌", "brandingDirectoryPath": "品牌信息文件夹路径", - "brandingHelp": "您可以通过改变实例名称,更换Logo,加入自定义样式,甚至禁用到Github的外部链接来自定义File Browser的外观和给人的感觉。\n想获得更多信息,请查看 {0} 。", + "brandingHelp": "您可以通过改变实例名称,更换 Logo,加入自定义样式,甚至禁用到 Github 的外部链接来自定义 File Browser 的外观和感觉。\n想获得更多信息,请查看 {0}。", "changePassword": "更改密码", "commandRunner": "命令执行器", - "commandRunnerHelp": "在这里你可以设置在下面的事件中执行的命令。每行必须写一条命令。可以在命令中使用环境变量 {0} 和 {1}。关于此功能和可用环境变量的更多信息,请阅读{2}.", + "commandRunnerHelp": "你可以在此设置在下列事件中执行的命令。每行必须写一条命令。可以在命令中使用环境变量 {0} 和 {1},使 {0} 与 {1} 相关联。关于此功能和可用环境变量的更多信息,请阅读 {2}。", "commandsUpdated": "命令已更新!", "createUserDir": "在添加新用户的同时自动创建用户的个人目录", "customStylesheet": "自定义样式表(CSS)", @@ -214,8 +214,8 @@ "disableExternalLinks": "禁止外部链接(帮助文档除外)", "documentation": "帮助文档", "examples": "例子", - "executeOnShell": "在Shell中执行", - "executeOnShellDescription": "默认情况下,File Browser通过直接调用命令的二进制包来执行命令,如果想在shell中执行(如Bash、PowerShell),你可以在这里定义所使用的shell和参数。如果设置了这个选项,所执行的命令会作为参数追加在后面。本选项对用户命令和事件钩子都生效。", + "executeOnShell": "在 Shell 中执行", + "executeOnShellDescription": "默认情况下,File Browser 通过直接调用命令的二进制包来执行命令,如果想在 Shell中 执行(如 Bash 或 PowerShell),你可以在这里定义所使用的 Shell 和参数。设置后,您所执行的命令会作为参数追加。本设置对用户命令和事件钩子都生效。", "globalRules": "这是全局允许与禁止规则。它们作用于所有用户。您可以给每个用户定义单独的特殊规则来覆盖全局规则。", "globalSettings": "全局设置", "hideDotfiles": "不显示隐藏文件", @@ -225,7 +225,7 @@ "language": "语言", "lockPassword": "禁止用户修改密码", "newPassword": "您的新密码", - "newPasswordConfirm": "重输一遍新密码", + "newPasswordConfirm": "再次输入以确认您的新密码", "newUser": "新建用户", "password": "密码", "passwordUpdated": "密码已更新!", @@ -240,12 +240,12 @@ "share": "分享文件" }, "permissions": "权限", - "permissionsHelp": "您可以将该用户设置为管理员,也可以单独选择各项权限。如果选择了“管理员”,则其他的选项会被自动勾上,同时该用户可以管理其他用户。", + "permissionsHelp": "您可以将该用户设置为管理员或单独选择各项权限。如果您选择了“管理员”,则其他的选项会被自动选中,同时该用户可以管理其他用户。\n", "profileSettings": "个人设置", - "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。", + "ruleExample1": "阻止用户访问所有文件夹下任何以 . 开头的文件(隐藏文件, 例如: .git, .gitignore)。\n", "ruleExample2": "阻止用户访问其目录范围的根目录下名为 Caddyfile 的文件。", "rules": "规则", - "rulesHelp": "您可以为该用户制定一组黑名单或白名单式的规则,被屏蔽的文件将不会显示在列表中,用户也无权限访问,支持相对于目录范围的路径。", + "rulesHelp": "您可以为该用户制定一组黑名单或白名单式的规则,被屏蔽的文件将不会显示在列表中,用户也无权限访问,支持正则表达式和相对于用户范围的路径。\n", "scope": "目录范围", "setDateFormat": "Set exact date format", "settingsUpdated": "设置已更新!", @@ -259,8 +259,8 @@ "title": "主题" }, "user": "用户", - "userCommands": "用户命令(shell 命令)", - "userCommandsHelp": "指定该用户可以执行的命令(shell 代码),用空格分隔。例如:", + "userCommands": "用户命令(Shell 命令)", + "userCommandsHelp": "指定该用户可以执行的命令(Shell 命令),用空格分隔。例如:\n", "userCreated": "用户已创建!", "userDefaults": "用户默认设置", "userDeleted": "用户已删除!", @@ -271,7 +271,7 @@ }, "sidebar": { "help": "帮助", - "hugoNew": "Hugo New", + "hugoNew": "Hugo 新建", "login": "登录", "logout": "登出", "myFiles": "我的文件", diff --git a/frontend/src/views/files/Preview.vue b/frontend/src/views/files/Preview.vue index 57c365e8..8c70ed8b 100644 --- a/frontend/src/views/files/Preview.vue +++ b/frontend/src/views/files/Preview.vue @@ -137,6 +137,8 @@ > chevron_right + + @@ -146,7 +148,6 @@ import { files as api } from "@/api"; import { baseURL, resizePreview } from "@/utils/constants"; import url from "@/utils/url"; import throttle from "lodash.throttle"; - import HeaderBar from "@/components/header/HeaderBar"; import Action from "@/components/header/Action"; import ExtendedImage from "@/components/files/ExtendedImage"; @@ -172,6 +173,8 @@ export default { navTimeout: null, hoverNav: false, autoPlay: false, + previousRaw: "", + nextRaw: "", }; }, computed: { @@ -302,13 +305,14 @@ export default { for (let j = i - 1; j >= 0; j--) { if (mediaTypes.includes(this.listing[j].type)) { this.previousLink = this.listing[j].url; + this.previousRaw = this.prefetchUrl(this.listing[j]); break; } } - for (let j = i + 1; j < this.listing.length; j++) { if (mediaTypes.includes(this.listing[j].type)) { this.nextLink = this.listing[j].url; + this.nextRaw = this.prefetchUrl(this.listing[j]); break; } } @@ -316,6 +320,16 @@ export default { return; } }, + prefetchUrl: function(item) { + const key = Date.parse(item.modified); + if (item.type === "image" && !this.fullSize) { + return `${baseURL}/api/preview/big${item.path}?k=${key}&inline=true`; + } else if (item.type === "image"){ + return `${baseURL}/api/raw${item.path}?k=${key}&inline=true`; + } else{ + return ""; + } + }, openMore() { this.$store.commit("showHover", "more"); },