From d58c85fbe42eb3fc222a18c5d61b8ad3b45fb7c7 Mon Sep 17 00:00:00 2001 From: Tobias Klika Date: Tue, 18 Jan 2022 21:37:03 +0100 Subject: [PATCH] vite+rollup stuff --- .../public/assets/zero-2-light.png | Bin 0 -> 5796 bytes zero.Backoffice.UI/public/assets/zero-2.png | Bin 0 -> 5670 bytes .../public/assets/zero-dark.png | Bin 0 -> 4052 bytes .../public/assets/zero-dark.svg | 22 + .../public/assets/zero-icon.png | Bin 0 -> 3935 bytes .../public/assets/zero-icon.svg | 12 + zero.Backoffice.UI/public/assets/zero.png | Bin 0 -> 4199 bytes zero.Backoffice.UI/public/assets/zero.svg | 22 + .../public/resources/icons/feather.svg | 492 ++++++++++++++++++ .../public/resources/icons/gg.svg | 1 + zero.Backoffice.UI/public/test.txt | 2 + zero.Backoffice.UI/vite.config.js | 20 +- .../BackofficeResourceFileSystem.cs | 11 + .../Configuration/BackofficeOptions.cs | 5 + .../Controllers/ZeroIndexController.cs | 27 +- zero.Backoffice/Plugin.cs | 9 +- zero.Backoffice/Resources/backoffice.tpl.html | 6 +- .../Services/Resources/ResourceService.cs | 31 +- zero.Backoffice/zero.Backoffice.csproj | 20 + 19 files changed, 639 insertions(+), 41 deletions(-) create mode 100644 zero.Backoffice.UI/public/assets/zero-2-light.png create mode 100644 zero.Backoffice.UI/public/assets/zero-2.png create mode 100644 zero.Backoffice.UI/public/assets/zero-dark.png create mode 100644 zero.Backoffice.UI/public/assets/zero-dark.svg create mode 100644 zero.Backoffice.UI/public/assets/zero-icon.png create mode 100644 zero.Backoffice.UI/public/assets/zero-icon.svg create mode 100644 zero.Backoffice.UI/public/assets/zero.png create mode 100644 zero.Backoffice.UI/public/assets/zero.svg create mode 100644 zero.Backoffice.UI/public/resources/icons/feather.svg create mode 100644 zero.Backoffice.UI/public/resources/icons/gg.svg create mode 100644 zero.Backoffice.UI/public/test.txt create mode 100644 zero.Backoffice/BackofficeResourceFileSystem.cs diff --git a/zero.Backoffice.UI/public/assets/zero-2-light.png b/zero.Backoffice.UI/public/assets/zero-2-light.png new file mode 100644 index 0000000000000000000000000000000000000000..bf58a59311b563adf00ab3f2f186b529135b4ce2 GIT binary patch literal 5796 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 M07*qoM6N<$g1#P`YXATM literal 0 HcmV?d00001 diff --git a/zero.Backoffice.UI/public/assets/zero-dark.png b/zero.Backoffice.UI/public/assets/zero-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d8447c3eacf2a50f8a859ac8e8742a0be0e9efdd GIT binary patch literal 4052 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 literal 0 HcmV?d00001 diff --git a/zero.Backoffice.UI/public/assets/zero-dark.svg b/zero.Backoffice.UI/public/assets/zero-dark.svg new file mode 100644 index 00000000..8330855d --- /dev/null +++ b/zero.Backoffice.UI/public/assets/zero-dark.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/zero.Backoffice.UI/public/assets/zero-icon.png b/zero.Backoffice.UI/public/assets/zero-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..683dc9369769c023acf753169022e9c5ea6fb8b8 GIT binary patch literal 3935 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 literal 0 HcmV?d00001 diff --git a/zero.Backoffice.UI/public/assets/zero-icon.svg b/zero.Backoffice.UI/public/assets/zero-icon.svg new file mode 100644 index 00000000..37e8f11a --- /dev/null +++ b/zero.Backoffice.UI/public/assets/zero-icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/zero.Backoffice.UI/public/assets/zero.png b/zero.Backoffice.UI/public/assets/zero.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d94bd68bbcfed547edb32f2459ff9d32bcbb6f GIT binary patch literal 4199 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 literal 0 HcmV?d00001 diff --git a/zero.Backoffice.UI/public/assets/zero.svg b/zero.Backoffice.UI/public/assets/zero.svg new file mode 100644 index 00000000..19ffb2ca --- /dev/null +++ b/zero.Backoffice.UI/public/assets/zero.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/zero.Backoffice.UI/public/resources/icons/feather.svg b/zero.Backoffice.UI/public/resources/icons/feather.svg new file mode 100644 index 00000000..bb63c4cb --- /dev/null +++ b/zero.Backoffice.UI/public/resources/icons/feather.svg @@ -0,0 +1,492 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/zero.Backoffice.UI/public/resources/icons/gg.svg b/zero.Backoffice.UI/public/resources/icons/gg.svg new file mode 100644 index 00000000..93e07bd6 --- /dev/null +++ b/zero.Backoffice.UI/public/resources/icons/gg.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/zero.Backoffice.UI/public/test.txt b/zero.Backoffice.UI/public/test.txt new file mode 100644 index 00000000..abc5dfba --- /dev/null +++ b/zero.Backoffice.UI/public/test.txt @@ -0,0 +1,2 @@ + +uff \ No newline at end of file diff --git a/zero.Backoffice.UI/vite.config.js b/zero.Backoffice.UI/vite.config.js index c04f6bc9..adfb1e04 100644 --- a/zero.Backoffice.UI/vite.config.js +++ b/zero.Backoffice.UI/vite.config.js @@ -99,17 +99,11 @@ let config = defineConfig({ build: { manifest: true, outDir: 'dist/zero', - minify: false, - terserOptions: { - compress: false - }, - //alias: { - // 'tiptap': 'tiptap/dist/tiptap.esm.js', + minify: 'esbuild', + //terserOptions: { + // compress: false //}, rollupOptions: { - external: { - '@vue/compat': 'xoo/xoo.js' - }, output: { format: 'es', entryFileNames: `[name].js`, @@ -120,18 +114,10 @@ let config = defineConfig({ } }); -//console.log('root: ' + config.root); - if (process.env.NODE_ENV === 'production') { config.base = '/zero/'; - //config.alias.tiptap = 'node_modules/tiptap/dist/tiptap.esm.js'; - - //config.alias.tiptap = 'node_modules/tiptap/dist/tiptap.esm.js'; - //config.alias.underscore = 'node_modules/underscore/underscore-esm.js'; - //config.alias.axios = 'node_modules/axios/dist/axios.js'; config.resolve.alias.dayjs = 'node_modules/dayjs/esm/index.js'; - //config.alias.tiptap = 'node_modules/tiptap/dist/tiptap.esm.js'; } export default config; \ No newline at end of file diff --git a/zero.Backoffice/BackofficeResourceFileSystem.cs b/zero.Backoffice/BackofficeResourceFileSystem.cs new file mode 100644 index 00000000..784a98d0 --- /dev/null +++ b/zero.Backoffice/BackofficeResourceFileSystem.cs @@ -0,0 +1,11 @@ +namespace zero.Backoffice; + +public class BackofficeResourceFileSystem : PhysicalFileSystem, IBackofficeResourceFileSystem +{ + public BackofficeResourceFileSystem(string root) : base(root) { } +} + + +public interface IBackofficeResourceFileSystem : IFileSystem +{ +} \ No newline at end of file diff --git a/zero.Backoffice/Configuration/BackofficeOptions.cs b/zero.Backoffice/Configuration/BackofficeOptions.cs index 5eafc93c..20a7ba76 100644 --- a/zero.Backoffice/Configuration/BackofficeOptions.cs +++ b/zero.Backoffice/Configuration/BackofficeOptions.cs @@ -2,6 +2,11 @@ public class BackofficeOptions { + /// + /// Hash for all zero assets + /// + public string AssetHash { get; set; } + /// /// Public path to zero assets /// diff --git a/zero.Backoffice/Controllers/ZeroIndexController.cs b/zero.Backoffice/Controllers/ZeroIndexController.cs index dcf30b78..7dbcda5f 100644 --- a/zero.Backoffice/Controllers/ZeroIndexController.cs +++ b/zero.Backoffice/Controllers/ZeroIndexController.cs @@ -14,12 +14,14 @@ public class ZeroIndexController : Controller IZeroOptions Options { get; set; } IIconService IconRepository { get; set; } IWebHostEnvironment Env { get; set; } + IBackofficeAssetFileSystem AssetFileSystem { get; set; } - public ZeroIndexController(IZeroOptions options, IIconService iconRepository, IWebHostEnvironment env) + public ZeroIndexController(IZeroOptions options, IIconService iconRepository, IWebHostEnvironment env, IBackofficeAssetFileSystem assetFileSystem) { Options = options; IconRepository = iconRepository; Env = env; + AssetFileSystem = assetFileSystem; } @@ -30,7 +32,9 @@ public class ZeroIndexController : Controller return RedirectToAction("ZeroBackoffice", "Setup"); } - int port = Options.For().DevServer.Port; + BackofficeOptions options = Options.For(); + + int port = options.DevServer.Port; string domain = "http://localhost:" + port; Dictionary model = new() @@ -40,14 +44,19 @@ public class ZeroIndexController : Controller { "svg", await IconRepository.GetCompiledSvg() } }; - if (!Env.IsDevelopment() || true) + if (!Env.IsDevelopment()) { - model["bottom"] = String.Empty; - model["top"] = @" - - - - "; + string html = System.IO.File.ReadAllText(Path.Combine(Env.WebRootPath, "zero/index.html")); + return Content(html, "text/html"); + //string assetHash = options.AssetHash; + //string suffix = assetHash.HasValue() ? "?v=" + assetHash : String.Empty; + + //model["bottom"] = String.Empty; + //model["top"] = @$" + // + // + // + //"; } string content = TokenReplacement.Apply(await LoadTemplate("zero.Backoffice.Resources.backoffice.tpl.html"), model); diff --git a/zero.Backoffice/Plugin.cs b/zero.Backoffice/Plugin.cs index a51b7c9a..11ac9413 100644 --- a/zero.Backoffice/Plugin.cs +++ b/zero.Backoffice/Plugin.cs @@ -19,7 +19,7 @@ public class ZeroBackofficePlugin : ZeroPlugin public ZeroBackofficePlugin() { Options.Name = "zero.Backoffice"; - Options.LocalizationPaths.Add("~/Resources/Localization/zero.{lang}.json"); + Options.LocalizationPaths.Add("Resources/Localization/zero.{lang}.json"); } @@ -42,6 +42,13 @@ public class ZeroBackofficePlugin : ZeroPlugin return new(Path.Combine(env.WebRootPath, options.Value.AssetPath)); }); + services.AddSingleton(svc => + { + IOptions options = svc.GetRequiredService>(); + IWebHostEnvironment env = svc.GetRequiredService(); + return new(env.ContentRootPath); + }); + services.AddZeroBackofficeUIComposition(); //services.AddTransient(); diff --git a/zero.Backoffice/Resources/backoffice.tpl.html b/zero.Backoffice/Resources/backoffice.tpl.html index 12eb4d88..29302f78 100644 --- a/zero.Backoffice/Resources/backoffice.tpl.html +++ b/zero.Backoffice/Resources/backoffice.tpl.html @@ -8,9 +8,9 @@ - - - + + + {top} zero diff --git a/zero.Backoffice/Services/Resources/ResourceService.cs b/zero.Backoffice/Services/Resources/ResourceService.cs index 6fa5565d..08c4f315 100644 --- a/zero.Backoffice/Services/Resources/ResourceService.cs +++ b/zero.Backoffice/Services/Resources/ResourceService.cs @@ -1,4 +1,6 @@ -using Microsoft.Extensions.Logging; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using Newtonsoft.Json.Linq; using System.IO; @@ -10,26 +12,32 @@ public class ResourceService : IResourceService { protected IOptions Options { get; set; } - protected IBackofficeAssetFileSystem FileSystem { get; set; } + protected IBackofficeAssetFileSystem AssetFileSystem { get; set; } + + protected IBackofficeResourceFileSystem ResourceFileSystem { get; set; } protected ILogger Logger { get; set; } protected IEnumerable Plugins { get; set; } + protected IWebHostEnvironment Env { get; set; } - public ResourceService(IOptions options, IBackofficeAssetFileSystem fileSystem, ILogger logger, IEnumerable plugins) + + public ResourceService(IOptions options, IBackofficeAssetFileSystem assetFileSystem, IBackofficeResourceFileSystem resourceFileSystem, ILogger logger, IEnumerable plugins, IWebHostEnvironment env) { Options = options; - FileSystem = fileSystem; + AssetFileSystem = assetFileSystem; + ResourceFileSystem = resourceFileSystem; Logger = logger; Plugins = plugins; + Env = env; } /// public Task> GetTranslations(string cultureIsoCode) { - var zeroTranslations = CreateTranslationsForFile("O:/zero/zero.Backoffice/Resources/Localization/zero.en-us.json", cultureIsoCode); // TODO + Dictionary zeroTranslations = new(); // CreateTranslationsForFile("O:/zero/zero.Backoffice/Resources/Localization/zero.en-us.json", cultureIsoCode); // TODO foreach (IZeroPlugin plugin in Plugins) { @@ -54,20 +62,21 @@ public class ResourceService : IResourceService Dictionary CreateTranslationsForFile(string path, string culture) { Dictionary items = new(); - culture = culture?.ToLower(); + culture = culture.ToLower(); - if (!culture.IsNullOrEmpty() && culture != "en-us") + if (path.Contains("{lang}")) { - items = CreateTranslationsForFile(path, "en-us"); - path = path.Replace("en-us", culture); + path = path.Replace("{lang}", culture); } - if (!File.Exists(path)) + string fullpath = Env.IsDevelopment() ? Path.Combine(AppContext.BaseDirectory, path) : ResourceFileSystem.Map(path); + + if (!File.Exists(fullpath)) { return items; } - string text = File.ReadAllText(path, Encoding.GetEncoding("ISO-8859-1")); + string text = File.ReadAllText(fullpath, Encoding.GetEncoding("ISO-8859-1")); JObject json = JObject.Parse(text); IEnumerable tokens = json.Descendants().Where(p => !p.Any()); diff --git a/zero.Backoffice/zero.Backoffice.csproj b/zero.Backoffice/zero.Backoffice.csproj index 03485234..b58d1024 100644 --- a/zero.Backoffice/zero.Backoffice.csproj +++ b/zero.Backoffice/zero.Backoffice.csproj @@ -17,8 +17,28 @@ + + + + + + + + + + Always + + + Always + + + Always + + + Always +