diff --git a/zero.Backoffice.UI/app/editor/fields/file.vue b/zero.Backoffice.UI/app/editor/fields/file.vue
index a2e7bb1b..6f66f824 100644
--- a/zero.Backoffice.UI/app/editor/fields/file.vue
+++ b/zero.Backoffice.UI/app/editor/fields/file.vue
@@ -71,19 +71,25 @@
.ui-filelink
{
border-radius: var(--radius-inner);
- background: var(--color-button-light);
- padding: 16px 26px 16px 20px;
+ border: 1px solid var(--color-line-dashed);
+ //background: var(--color-button-light);
+ padding: 16px 24px;
display: inline-grid;
- grid-template-columns: 36px 1fr;
- gap: 12px;
+ grid-template-columns: auto 1fr;
+ gap: 22px;
align-items: center;
+
+ &:hover
+ {
+ background: var(--color-button-light);
+ border-color: transparent;
+ }
}
.ui-filelink-icon
{
position: relative;
top: -2px;
- left: 4px;
color: var(--color-text);
}
diff --git a/zero.Core/FileStorage/WebRootFileSystem.cs b/zero.Core/FileStorage/WebRootFileSystem.cs
new file mode 100644
index 00000000..d1c64cf6
--- /dev/null
+++ b/zero.Core/FileStorage/WebRootFileSystem.cs
@@ -0,0 +1,28 @@
+namespace zero.Media;
+
+public class WebRootFileSystem : PhysicalFileSystem, IWebRootFileSystem
+{
+ protected string PublicPathPrefix { get; }
+
+
+ public WebRootFileSystem(string root, string publicPathPrefix) : base(root)
+ {
+ PublicPathPrefix = (publicPathPrefix ?? String.Empty).EnsureEndsWith('/');
+ }
+
+
+ ///
+ public override string MapToPublicPath(string path)
+ {
+ if (path.IsNullOrEmpty())
+ {
+ return null;
+ }
+ return PublicPathPrefix + path.TrimStart('/');
+ }
+}
+
+
+public interface IWebRootFileSystem : IFileSystem
+{
+}
\ No newline at end of file
diff --git a/zero.Core/FileStorage/ZeroFileStorageModule.cs b/zero.Core/FileStorage/ZeroFileStorageModule.cs
index ae128745..f195cdc0 100644
--- a/zero.Core/FileStorage/ZeroFileStorageModule.cs
+++ b/zero.Core/FileStorage/ZeroFileStorageModule.cs
@@ -15,5 +15,11 @@ internal class ZeroFileStorageModule : ZeroModule
{
opts.ZeroAssetsPath = "zero";
});
+
+ services.AddSingleton(svc =>
+ {
+ IWebHostEnvironment env = svc.GetRequiredService();
+ return new(env.WebRootPath, null);
+ });
}
}
\ No newline at end of file