From d7c4d383c070ee6c34c54f04909f0e15cf174d2c Mon Sep 17 00:00:00 2001 From: Okeanij Date: Wed, 15 Jan 2020 23:06:10 +0300 Subject: [PATCH] Add CustomCss tab at Skins Admin --- Client/package.json | 8 +- Client/quasar.extensions.json | 2 +- Client/src/admin/roles/RolesPermissions.vue | 1 + Client/src/admin/skins/CustomCssAdmin.vue | 74 +++++++++++++++++++ Client/src/admin/skins/MainSkinsAdmin.vue | 3 +- Client/src/admin/skins/SkinsAdmin.vue | 8 ++ Client/src/api/AdminApi.js | 4 +- Client/src/i18n/en-us/admin.js | 10 ++- Client/src/i18n/ru/admin.js | 10 ++- Client/src/router/adminRoutes.js | 9 +++ Client/src/statics/config.js | 6 +- Client/src/statics/custom.css | 3 + Client/src/sun.js | 2 + README.RU.md | 2 +- README.md | 2 +- .../Controllers/SkinsAdminController.cs | 16 ++++ .../Services/ConfigurationAdminService.cs | 1 + .../Services/SkinsAdminService.cs | 15 ++++ Server/SunEngine.Cli/SunEngine.Cli.csproj | 2 +- Server/SunEngine.Core/SunEngine.Core.csproj | 10 +-- .../SunEngine.DataSeed.csproj | 2 +- .../SunEngine.Migrations.csproj | 2 +- 22 files changed, 172 insertions(+), 20 deletions(-) create mode 100644 Client/src/admin/skins/CustomCssAdmin.vue create mode 100644 Client/src/statics/custom.css diff --git a/Client/package.json b/Client/package.json index 036cef4c..098999d2 100644 --- a/Client/package.json +++ b/Client/package.json @@ -1,6 +1,6 @@ { "name": "sunengine-client", - "version": "2.1.3", + "version": "2.2.0", "description": "SunEngine - web engine with support of blog, forum and articles functionality", "productName": "SunEngine", "author": "Dimitrij Polianin", @@ -13,14 +13,14 @@ "build & publish": "cd ../Scripts && bash build.sh && bash publish.sh" }, "dependencies": { - "@quasar/extras": "^1.4.0", + "@quasar/extras": "^1.4.1", "axios": "^0.18.1", "js-lock": "^0.1.1", - "quasar": "^1.7.1", + "quasar": "^1.7.3", "vue-i18n": "^8.15.3" }, "devDependencies": { - "@quasar/app": "^1.5.0", + "@quasar/app": "^1.5.1", "@quasar/quasar-app-extension-qiconpicker": "^1.0.15", "babel-preset-proposals": "^0.1.0", "glob": "^7.1.4", diff --git a/Client/quasar.extensions.json b/Client/quasar.extensions.json index 3ecf805b..86209407 100644 --- a/Client/quasar.extensions.json +++ b/Client/quasar.extensions.json @@ -2,7 +2,7 @@ "ide-helper": { "addToGitIgnore": true, "__internal": { - "lastQuasarVersion": "1.7.1", + "lastQuasarVersion": "1.7.3", "lastIdeHelperVersion": "1.0.0-alpha.3" } }, diff --git a/Client/src/admin/roles/RolesPermissions.vue b/Client/src/admin/roles/RolesPermissions.vue index e22f2e4d..fb4c5499 100644 --- a/Client/src/admin/roles/RolesPermissions.vue +++ b/Client/src/admin/roles/RolesPermissions.vue @@ -4,6 +4,7 @@
+
+ +
+
+ + + +
+
+ + + + + diff --git a/Client/src/admin/skins/MainSkinsAdmin.vue b/Client/src/admin/skins/MainSkinsAdmin.vue index 16961dbe..a8c90f9f 100644 --- a/Client/src/admin/skins/MainSkinsAdmin.vue +++ b/Client/src/admin/skins/MainSkinsAdmin.vue @@ -125,8 +125,9 @@ class="skins-admin__info-link link" href="https://github.com/sunengine/SunEngine.Skins" target="_blank" - >https://github.com/sunengine/SunEngine.Skins + https://github.com/sunengine/SunEngine.Skins +
diff --git a/Client/src/admin/skins/SkinsAdmin.vue b/Client/src/admin/skins/SkinsAdmin.vue index ae0425ff..10b431e9 100644 --- a/Client/src/admin/skins/SkinsAdmin.vue +++ b/Client/src/admin/skins/SkinsAdmin.vue @@ -17,6 +17,13 @@ icon="fas fa-puzzle-piece" :label="$tl('partialSkins')" /> +
@@ -44,6 +51,7 @@ export default { beforeCreate() { this.$options.components.MainSkinsAdmin = require("sun").MainSkinsAdmin; this.$options.components.PartialSkinsAdmin = require("sun").PartialSkinsAdmin; + this.$options.components.CustomCssAdmin = require("sun").CustomCssAdmin; }, created() { this.title = this.$tl("title"); diff --git a/Client/src/api/AdminApi.js b/Client/src/api/AdminApi.js index ef19a2d2..55b32ff4 100644 --- a/Client/src/api/AdminApi.js +++ b/Client/src/api/AdminApi.js @@ -55,7 +55,9 @@ export default { ChangeSkin: "/Admin/SkinsAdmin/ChangeSkin", DeleteSkin: "/Admin/SkinsAdmin/DeleteSkin", DeletePartialSkin: "/Admin/SkinsAdmin/DeletePartialSkin", - EnablePartialSkin: "/Admin/SkinsAdmin/EnablePartialSkin" + EnablePartialSkin: "/Admin/SkinsAdmin/EnablePartialSkin", + GetCustomCss: "/Admin/SkinsAdmin/GetCustomCss", + UpdateCustomCss: "/Admin/SkinsAdmin/UpdateCustomCss" }, ConfigurationAdmin: { UploadConfiguration: "/Admin/ConfigurationAdmin/UploadConfiguration", diff --git a/Client/src/i18n/en-us/admin.js b/Client/src/i18n/en-us/admin.js index b0412138..5e6dd73c 100644 --- a/Client/src/i18n/en-us/admin.js +++ b/Client/src/i18n/en-us/admin.js @@ -458,7 +458,8 @@ export default { SkinsAdmin: { title: "Skins admin", mainSkins: "Main skins", - partialSkins: "Partial skins" + partialSkins: "Partial skins", + customCss: "Custom CSS" }, MainSkinsAdmin: { title: "Skins admin", @@ -485,5 +486,12 @@ export default { btnDeleteOk: "@:Global.dialog.yes", btnDeleteCancel: "@:Global.dialog.cancel", upload: "Upload partial skin" + }, + CustomCssAdmin: { + title: "Custom CSS", + saveBtn: "@:Global.btn.save", + refreshBtn: "Reload from server", + reloadSuccessNotify: "Css reloaded from server", + successNotify: "Css successfully updated" } }; diff --git a/Client/src/i18n/ru/admin.js b/Client/src/i18n/ru/admin.js index 2e2b299b..f63441fc 100644 --- a/Client/src/i18n/ru/admin.js +++ b/Client/src/i18n/ru/admin.js @@ -497,7 +497,8 @@ export default { SkinsAdmin: { title: "Темы оформления", mainSkins: "Основные темы", - partialSkins: "Дополнительные темы" + partialSkins: "Дополнительные темы", + customCss: "Произвольный CSS" }, MainSkinsAdmin: { title: "Основные темы оформления", @@ -524,5 +525,12 @@ export default { btnDeleteOk: "@:Global.dialog.yes", btnDeleteCancel: "@:Global.dialog.cancel", upload: "Загрузить дополнительную тему" + }, + CustomCssAdmin: { + title: "Произвольный CSS", + saveBtn: "@:Global.btn.save", + refreshBtn: "Перегрузить с сервера", + reloadSuccessNotify: "Данные перезагружены с сервера", + successNotify: "Данные успешно сохранены" } }; diff --git a/Client/src/router/adminRoutes.js b/Client/src/router/adminRoutes.js index 1983664a..c7cb0579 100644 --- a/Client/src/router/adminRoutes.js +++ b/Client/src/router/adminRoutes.js @@ -19,6 +19,7 @@ import { EditComponent } from "sun"; import { SkinsAdmin } from "sun"; import { MainSkinsAdmin } from "sun"; import { PartialSkinsAdmin } from "sun"; +import {CustomCssAdmin} from "sun"; import { ConfigurationAdmin } from "sun"; import { AdminInformation } from "sun"; @@ -125,6 +126,14 @@ const routes = [ default: PartialSkinsAdmin, navigation: AdminPanel } + }, + { + name: "CustomCssAdmin", + path: "Custom".toLowerCase(), + components: { + default: CustomCssAdmin, + navigation: AdminPanel + } } ] }, diff --git a/Client/src/statics/config.js b/Client/src/statics/config.js index 90ed15ce..c497b14b 100644 --- a/Client/src/statics/config.js +++ b/Client/src/statics/config.js @@ -10,7 +10,8 @@ const config = { SiteUrl: "http://localhost:5005", UploadImagesUrl: "http://localhost:5000/UploadImages", SkinsUrl: "http://localhost:5005/statics/Skins", - PartialSkinsUrl: "http://localhost:5005/statics/PartialSkins" + PartialSkinsUrl: "http://localhost:5005/statics/PartialSkins", + CustomCssUrl: "http://localhost:5000/statics/custom.css" }, Dev: { VueDevTools: true, @@ -63,3 +64,6 @@ if (config.Global.SiteUrl.startsWith("http://")) else if (config.Global.SiteUrl.startsWith("https://")) config.Global.SiteSchema = "https://"; else throw "SiteUrl in config.js have to start with 'http://' or 'https://'."; + +document.writeln(``); + diff --git a/Client/src/statics/custom.css b/Client/src/statics/custom.css new file mode 100644 index 00000000..379686de --- /dev/null +++ b/Client/src/statics/custom.css @@ -0,0 +1,3 @@ +.test1 { + color: red; +} \ No newline at end of file diff --git a/Client/src/sun.js b/Client/src/sun.js index 6c270f3e..330a7f97 100644 --- a/Client/src/sun.js +++ b/Client/src/sun.js @@ -23,6 +23,7 @@ export ProfileRoles from 'src/admin/roles/ProfileRoles.vue' export RolesPage from 'src/admin/roles/RolesPage.vue' export RolesPermissions from 'src/admin/roles/RolesPermissions.vue' export RoleUsers from 'src/admin/roles/RoleUsers.vue' +export CustomCssAdmin from 'src/admin/skins/CustomCssAdmin.vue' export MainSkinsAdmin from 'src/admin/skins/MainSkinsAdmin.vue' export PartialSkinsAdmin from 'src/admin/skins/PartialSkinsAdmin.vue' export SkinsAdmin from 'src/admin/skins/SkinsAdmin.vue' @@ -118,6 +119,7 @@ export miscRoutes from 'src/router/miscRoutes.js' export pageNotFoundRoute from 'src/router/pageNotFoundRoute.js' export personalRoutes from 'src/router/personalRoutes.js' export adminState from 'src/store/admin/adminState.js' +export * from 'src/store/admin/getters/breadcrumbs.js' export loadMyUserInfo from 'src/store/auth/actions/loadMyUserInfo.js' export login from 'src/store/auth/actions/login.js' export logout from 'src/store/auth/actions/logout.js' diff --git a/README.RU.md b/README.RU.md index fed436d9..49632435 100644 --- a/README.RU.md +++ b/README.RU.md @@ -6,7 +6,7 @@ # SunEngine - + diff --git a/README.md b/README.md index 1b96b781..396e396b 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ # SunEngine - + diff --git a/Server/SunEngine.Admin/Controllers/SkinsAdminController.cs b/Server/SunEngine.Admin/Controllers/SkinsAdminController.cs index 2345547a..40705b8b 100644 --- a/Server/SunEngine.Admin/Controllers/SkinsAdminController.cs +++ b/Server/SunEngine.Admin/Controllers/SkinsAdminController.cs @@ -87,5 +87,21 @@ public IActionResult GetAllPartialSkins() return Json(allSkins); } + + [HttpPost] + public IActionResult GetCustomCss() + { + var cssText = skinsAdminService.GetCustomCss(); + + return Ok(cssText); + } + + [HttpPost] + public IActionResult UpdateCustomCss(string cssText) + { + skinsAdminService.UpdateCustomCss(cssText); + + return Ok(); + } } } \ No newline at end of file diff --git a/Server/SunEngine.Admin/Services/ConfigurationAdminService.cs b/Server/SunEngine.Admin/Services/ConfigurationAdminService.cs index c28a73da..4bb36744 100644 --- a/Server/SunEngine.Admin/Services/ConfigurationAdminService.cs +++ b/Server/SunEngine.Admin/Services/ConfigurationAdminService.cs @@ -43,6 +43,7 @@ public void UpdateClientScripts() ["Global:SiteApi"] = typeof(string), ["Global:SiteUrl"] = typeof(string), ["Global:UploadImagesUrl"] = typeof(string), + ["Global:StaticsUrl"] = typeof(string), ["Global:SkinsUrl"] = typeof(string), ["Global:PartialSkinsUrl"] = typeof(string), diff --git a/Server/SunEngine.Admin/Services/SkinsAdminService.cs b/Server/SunEngine.Admin/Services/SkinsAdminService.cs index 561a5c8c..98367487 100644 --- a/Server/SunEngine.Admin/Services/SkinsAdminService.cs +++ b/Server/SunEngine.Admin/Services/SkinsAdminService.cs @@ -180,6 +180,21 @@ public void EnablePartialSkin(string name, bool enable) configurationAdminService.UpdateClientScripts(); } + public string GetCustomCss() + { + var customCssPath = Path.Combine(WwwRootPath, "statics", "custom.css"); + return !File.Exists(customCssPath) ? "" : File.ReadAllText(customCssPath); + } + + public void UpdateCustomCss(string cssText) + { + var customCssPath = Path.Combine(WwwRootPath, "statics", "custom.css"); + if (File.Exists(customCssPath)) + File.Delete(customCssPath); + + File.WriteAllText(customCssPath, cssText); + } + public List GetAllSkins(SkinType skinType) { var skinsPaths = Directory.GetDirectories(skinType == SkinType.Main ? SkinsPath : PartialSkinsPath); diff --git a/Server/SunEngine.Cli/SunEngine.Cli.csproj b/Server/SunEngine.Cli/SunEngine.Cli.csproj index 5f0e5870..ede055cd 100644 --- a/Server/SunEngine.Cli/SunEngine.Cli.csproj +++ b/Server/SunEngine.Cli/SunEngine.Cli.csproj @@ -3,7 +3,7 @@ netcoreapp3.1 latest - 2.1.3 + 2.2.0 SunEngine Dimitrij Polianin Site engine with blog, forum and articles functionalities on Asp.Net Core and Vue.Js. diff --git a/Server/SunEngine.Core/SunEngine.Core.csproj b/Server/SunEngine.Core/SunEngine.Core.csproj index 64965c7b..3b4e58d0 100644 --- a/Server/SunEngine.Core/SunEngine.Core.csproj +++ b/Server/SunEngine.Core/SunEngine.Core.csproj @@ -2,7 +2,7 @@ netcoreapp3.1 - 2.1.3 + 2.2.0 default @@ -13,10 +13,10 @@ - - - - + + + + diff --git a/Server/SunEngine.DataSeed/SunEngine.DataSeed.csproj b/Server/SunEngine.DataSeed/SunEngine.DataSeed.csproj index 3d0cf1eb..3467c059 100644 --- a/Server/SunEngine.DataSeed/SunEngine.DataSeed.csproj +++ b/Server/SunEngine.DataSeed/SunEngine.DataSeed.csproj @@ -8,7 +8,7 @@ - + diff --git a/Server/SunEngine.Migrations/SunEngine.Migrations.csproj b/Server/SunEngine.Migrations/SunEngine.Migrations.csproj index ca844e20..468e8245 100644 --- a/Server/SunEngine.Migrations/SunEngine.Migrations.csproj +++ b/Server/SunEngine.Migrations/SunEngine.Migrations.csproj @@ -11,7 +11,7 @@ - +