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");
},