diff --git a/docs/en/Getting-Started-Angular-Template.md b/docs/en/Getting-Started-Angular-Template.md index bdc5658e55..9a4fddcf2a 100644 --- a/docs/en/Getting-Started-Angular-Template.md +++ b/docs/en/Getting-Started-Angular-Template.md @@ -123,4 +123,4 @@ The startup template includes the **identity management** and **tenant managemen ### What's Next? -* [Application development tutorial](Tutorials/Part-1.md?UI=NG) +* [Application development tutorial](Tutorials/Part-1) diff --git a/docs/en/Getting-Started-AspNetCore-MVC-Template.md b/docs/en/Getting-Started-AspNetCore-MVC-Template.md index fd8ef3a81a..311bb8b4dc 100644 --- a/docs/en/Getting-Started-AspNetCore-MVC-Template.md +++ b/docs/en/Getting-Started-AspNetCore-MVC-Template.md @@ -101,4 +101,4 @@ The startup template includes the **identity management** and **tenant managemen ### What's Next? -* [Application development tutorial](Tutorials/Part-1.md?UI=MVC) +* [Application development tutorial](Tutorials/Part-1.md) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml index ea379156a4..39b079f802 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ButtonsDemo/Default.cshtml @@ -26,15 +26,30 @@ - + + + + -
+
+ + + + + + + + + + + + - \ No newline at end of file + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CardsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CardsDemo/Default.cshtml index b37c877f34..d40637735c 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CardsDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/CardsDemo/Default.cshtml @@ -2,7 +2,7 @@ - + Card Title Some quick example text to build on the card title and make up the bulk of the card's content. @@ -46,7 +46,7 @@ - + Card TitleSome quick example text to build on the card title and make up the bulk of the card's content. @@ -97,6 +97,155 @@ + +
+
+ + Quote + + +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+
+
+
+ + Featured + + Special title treatment + With supporting text below as a natural lead-in to additional content. + Go somewhere + + 2 days ago + +
+
+
+ + + + Quote + + +

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.

+
Someone famous in Source Title
+
+
+
+ + Featured + + Special title treatment + With supporting text below as a natural lead-in to additional content. + Go somewhere + + 2 days ago + +
+ + + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + Go somewhere + + + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + Go somewhere + + + + + Special title treatment + With supporting text below as a natural lead-in to additional content. + Go somewhere + + + + + + + +
+ Card Title + Some quick example text to build on the card title and make up the bulk of the card's content. + Go somewhere +
+
+
+ + + + Header + + Primary card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Secondary card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Success card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Danger card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Warning card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Info card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Light card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + + Header + + Dark card title + Some quick example text to build on the card title and make up the bulk of the card's content. + + + + Featured diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DropdownsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DropdownsDemo/Default.cshtml index f21d4fc3c7..1a9587b600 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DropdownsDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DropdownsDemo/Default.cshtml @@ -10,9 +10,6 @@ Something else here - - - @@ -21,9 +18,6 @@ Something else here - - - @@ -47,9 +41,6 @@ Separated link - - - @@ -59,7 +50,8 @@ Separated link - + + Action @@ -68,7 +60,8 @@ Separated link - + + Action @@ -77,7 +70,8 @@ Separated link - + + Action @@ -89,6 +83,7 @@ + @@ -97,14 +92,16 @@ Another action Something else here - + + Action Another action Something else here - + + Action diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/DynamicFormsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/DynamicFormsDemoViewComponent.cs index 63b411f1a2..3681eda627 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/DynamicFormsDemoViewComponent.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/DynamicFormsDemoViewComponent.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S [Widget] public class DynamicFormsDemoViewComponent : AbpViewComponent { - public const string ViewPath = "/Views/Components/Themes/Shared/Demos/DynamicForms/Default.cshtml"; + public const string ViewPath = "/Views/Components/Themes/Shared/Demos/DynamicFormsDemo/Default.cshtml"; public IViewComponentResult Invoke() { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/FormElementsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/FormElementsDemoViewComponent.cs index ef1f509e02..01c477ecb1 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/FormElementsDemoViewComponent.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/FormElementsDemo/FormElementsDemoViewComponent.cs @@ -6,7 +6,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.S [Widget] public class FormElementsDemoViewComponent : AbpViewComponent { - public const string ViewPath = "/Views/Components/Themes/Shared/Demos/FormElements/Default.cshtml"; + public const string ViewPath = "/Views/Components/Themes/Shared/Demos/FormElementsDemo/Default.cshtml"; public IViewComponentResult Invoke() { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ListGroupsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ListGroupsDemo/Default.cshtml index ff11769976..69dfbd24c4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ListGroupsDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/ListGroupsDemo/Default.cshtml @@ -18,7 +18,7 @@ - + Cras justo odio Dapibus ac facilisis in @@ -27,12 +27,12 @@ - + - Cras justo odio - Dapibus ac facilisis in - Morbi leo risus - Vestibulum at eros + Cras justo odio + Dapibus ac facilisis in + Morbi leo risus + Vestibulum at eros @@ -59,7 +59,7 @@ - + Cras justo odio A simple Primary list group item diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/Default.cshtml new file mode 100644 index 0000000000..f0c5113054 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/Default.cshtml @@ -0,0 +1,71 @@ +@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.NavbarsDemo + + + + Navbar + + + + Home (current) + + + Link + + + + + + Dropdown header + Action + Another disabled action + Something else here + + Separated link + + + + + Disabled + + + + Sample Text + + + + + + + + Navbar + + + + Home (current) + + + Link + + + + + + Dropdown header + Action + Another disabled action + Something else here + + Separated link + + + + + Disabled + + + + Sample Text + + + + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/NavbarsDemoViewComponent.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/NavbarsDemoViewComponent.cs new file mode 100644 index 0000000000..e282f1b923 --- /dev/null +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavbarsDemo/NavbarsDemoViewComponent.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Widgets; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.NavbarsDemo +{ + [Widget] + public class NavbarsDemoViewComponent : AbpViewComponent + { + public const string ViewPath = "/Views/Components/Themes/Shared/Demos/NavbarsDemo/Default.cshtml"; + + public IViewComponentResult Invoke() + { + return View(ViewPath); + } + } +} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavsDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavsDemo/Default.cshtml index 033fefa45b..1423aea2b6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavsDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/NavsDemo/Default.cshtml @@ -8,6 +8,16 @@ Longer nav link + + + + + Action + Another action + Something else here + + + link @@ -17,37 +27,104 @@ - - - Navbar - - - - Home (current) - - - Link - - - - - - Dropdown header - Action - Another disabled action - Something else here - - Separated link - - - - - Disabled - - - - Sample Text - - - + + + + Active + + + Longer nav link + + + + + + Action + Another action + Something else here + + + + + link + + + disabled + + + + + Active + + + Longer nav link + + + + + + Action + Another action + Something else here + + + + + link + + + disabled + + + + + Active + + + Longer nav link + + + + + + Action + Another action + Something else here + + + + + link + + + disabled + + + + + + + Active + + + Longer nav link + + + + + + Action + Another action + Something else here + + + + + link + + + disabled + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/PopoversDemo/Default.cshtml b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/PopoversDemo/Default.cshtml index 8e171cb640..1efee90533 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/PopoversDemo/Default.cshtml +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo/Views/Components/Themes/Shared/Demos/PopoversDemo/Default.cshtml @@ -1,16 +1,16 @@ @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.PopoversDemo - + Popover Default - + Popover With Title - + Dismissible Popover - + Disabled Popover diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs index 34bf95fdf1..63fb4f8eee 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs @@ -30,6 +30,8 @@ namespace Volo.Abp.Cli options.Commands["login"] = typeof(LoginCommand); options.Commands["logout"] = typeof(LogoutCommand); options.Commands["suite"] = typeof(SuiteCommand); + options.Commands["switch-to-preview"] = typeof(SwitchNightlyPreviewCommand); + options.Commands["switch-to-stable"] = typeof(SwitchStableCommand); }); } } diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchNightlyPreviewCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchNightlyPreviewCommand.cs new file mode 100644 index 0000000000..9f0862258f --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchNightlyPreviewCommand.cs @@ -0,0 +1,44 @@ +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.ProjectModification; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.Commands +{ + public class SwitchNightlyPreviewCommand : IConsoleCommand, ITransientDependency + { + private readonly PackageSourceSwitcher _packageSourceSwitcher; + + public SwitchNightlyPreviewCommand(PackageSourceSwitcher packageSourceSwitcher) + { + _packageSourceSwitcher = packageSourceSwitcher; + } + + public async Task ExecuteAsync(CommandLineArgs commandLineArgs) + { + await _packageSourceSwitcher.SwitchToPreview(commandLineArgs); + } + + public string GetUsageInfo() + { + var sb = new StringBuilder(); + + sb.AppendLine(""); + sb.AppendLine("Usage:"); + sb.AppendLine(" abp switch-to-preview [options]"); + sb.AppendLine(""); + sb.AppendLine("Options:"); + sb.AppendLine("-sp|--solution-path"); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); + + return sb.ToString(); + } + + public string GetShortDescription() + { + return "Switches packages to nightly preview ABP version."; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchStableCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchStableCommand.cs new file mode 100644 index 0000000000..333583e96d --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/SwitchStableCommand.cs @@ -0,0 +1,44 @@ +using System.Text; +using System.Threading.Tasks; +using Volo.Abp.Cli.Args; +using Volo.Abp.Cli.ProjectModification; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.Commands +{ + public class SwitchStableCommand : IConsoleCommand, ITransientDependency + { + private readonly PackageSourceSwitcher _packageSourceSwitcher; + + public SwitchStableCommand(PackageSourceSwitcher packageSourceSwitcher) + { + _packageSourceSwitcher = packageSourceSwitcher; + } + + public async Task ExecuteAsync(CommandLineArgs commandLineArgs) + { + await _packageSourceSwitcher.SwitchToStable(commandLineArgs); + } + + public string GetUsageInfo() + { + var sb = new StringBuilder(); + + sb.AppendLine(""); + sb.AppendLine("Usage:"); + sb.AppendLine(" abp switch-to-stable [options]"); + sb.AppendLine(""); + sb.AppendLine("Options:"); + sb.AppendLine("-sp|--solution-path"); + sb.AppendLine(""); + sb.AppendLine("See the documentation for more info: https://docs.abp.io/en/abp/latest/CLI"); + + return sb.ToString(); + } + + public string GetShortDescription() + { + return "Switches packages to stable ABP version from preview version."; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs index d201790c94..c44f77b749 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/UpdateCommand.cs @@ -42,13 +42,13 @@ namespace Volo.Abp.Cli.Commands if (updateNpm || !updateNuget) { - UpdateNpmPackages(directory); + await UpdateNpmPackages(directory); } } - private void UpdateNpmPackages(string directory) + private async Task UpdateNpmPackages(string directory) { - _npmPackagesUpdater.Update(directory); + await _npmPackagesUpdater.Update(directory); } private async Task UpdateNugetPackages(CommandLineArgs commandLineArgs, string directory) @@ -94,7 +94,7 @@ namespace Volo.Abp.Cli.Commands sb.AppendLine(""); sb.AppendLine("Usage:"); sb.AppendLine(""); - sb.AppendLine(" abp update [options]"); + sb.AppendLine(" abp update [options]"); sb.AppendLine(""); sb.AppendLine("Options:"); sb.AppendLine("-p|--include-previews (if supported by the template)"); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetApiResponse.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetApiResponse.cs new file mode 100644 index 0000000000..9a32d8d6fc --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetApiResponse.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class MyGetApiResponse + { + public string _date { get; set; } + + public List Packages { get; set; } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackage.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackage.cs new file mode 100644 index 0000000000..e5ef40ca17 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackage.cs @@ -0,0 +1,15 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class MyGetPackage + { + public string PackageType { get; set; } + + public string Id { get; set; } + + public List Versions { get; set; } + + public List Dates { get; set; } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackageListFinder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackageListFinder.cs new file mode 100644 index 0000000000..41907276f4 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/MyGetPackageListFinder.cs @@ -0,0 +1,51 @@ +using System; +using System.Text; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Newtonsoft.Json; +using Volo.Abp.Cli.Http; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class MyGetPackageListFinder : ISingletonDependency + { + private MyGetApiResponse _response; + + public ILogger Logger { get; set; } + + public MyGetPackageListFinder() + { + Logger = NullLogger.Instance; + } + + public async Task GetPackages() + { + if (_response != null) + { + return _response; + } + + try + { + using (var client = new CliHttpClient(TimeSpan.FromMinutes(10))) + { + var responseMessage = await client.GetAsync( + $"{CliUrls.WwwAbpIo}api/myget/packages/" + ); + + _response = JsonConvert.DeserializeObject(Encoding.Default.GetString(await responseMessage.Content.ReadAsByteArrayAsync())); + } + } + catch (Exception) + { + Logger.LogError("Unable to get latest preview version."); + throw; + } + + return _response; + } + + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs index 41fd33b4fb..91eaec48e7 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/NpmPackagesUpdater.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; +using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; using Newtonsoft.Json; @@ -18,18 +19,20 @@ namespace Volo.Abp.Cli.ProjectModification private readonly PackageJsonFileFinder _packageJsonFileFinder; private readonly NpmGlobalPackagesChecker _npmGlobalPackagesChecker; + private readonly MyGetPackageListFinder _myGetPackageListFinder; private readonly Dictionary _fileVersionStorage = new Dictionary(); - public NpmPackagesUpdater(PackageJsonFileFinder packageJsonFileFinder, NpmGlobalPackagesChecker npmGlobalPackagesChecker) + public NpmPackagesUpdater(PackageJsonFileFinder packageJsonFileFinder, NpmGlobalPackagesChecker npmGlobalPackagesChecker, MyGetPackageListFinder myGetPackageListFinder) { _packageJsonFileFinder = packageJsonFileFinder; _npmGlobalPackagesChecker = npmGlobalPackagesChecker; + _myGetPackageListFinder = myGetPackageListFinder; Logger = NullLogger.Instance; } - public void Update(string rootDirectory) + public async Task Update(string rootDirectory, bool includePreviews = false, bool switchToStable = false) { var fileList = _packageJsonFileFinder.Find(rootDirectory); @@ -42,7 +45,7 @@ namespace Volo.Abp.Cli.ProjectModification foreach (var file in fileList) { - UpdatePackagesInFile(file, out var packagesUpdated); + var packagesUpdated = await UpdatePackagesInFile(file, includePreviews, switchToStable); if (packagesUpdated) { @@ -64,21 +67,21 @@ namespace Volo.Abp.Cli.ProjectModification return File.Exists(Path.Combine(fileDirectory, "angular.json")); } - protected virtual void UpdatePackagesInFile(string file, out bool packagesUpdated) + protected virtual async Task UpdatePackagesInFile(string file, bool includePreviews = false, bool switchToStable = false) { - packagesUpdated = false; + var packagesUpdated = false; var fileContent = File.ReadAllText(file); var packageJson = JObject.Parse(fileContent); var abpPackages = GetAbpPackagesFromPackageJson(packageJson); if (!abpPackages.Any()) { - return; + return packagesUpdated; } foreach (var abpPackage in abpPackages) { - TryUpdatePackage(file, abpPackage, out var updated); + var updated = await TryUpdatePackage(file, abpPackage, includePreviews, switchToStable); if (updated) { @@ -89,18 +92,23 @@ namespace Volo.Abp.Cli.ProjectModification var modifiedFileContent = packageJson.ToString(Formatting.Indented); File.WriteAllText(file, modifiedFileContent); + + return packagesUpdated; } - protected virtual void TryUpdatePackage(string file, JProperty package, out bool updated) + protected virtual async Task TryUpdatePackage(string file, JProperty package, + bool includePreviews = false, bool switchToStable = false) { - var version = GetLatestVersion(package); + var updated = false; + var currentVersion = (string)package.Value; + + var version = await GetLatestVersion(package, currentVersion, includePreviews, switchToStable); var versionWithPrefix = $"^{version}"; - if (versionWithPrefix == (string)package.Value) + if (versionWithPrefix == currentVersion) { - updated = false; - return; + return false; } else { @@ -110,25 +118,41 @@ namespace Volo.Abp.Cli.ProjectModification package.Value.Replace(versionWithPrefix); Logger.LogInformation($"Updated {package.Name} to {version} in {file.Replace(Directory.GetCurrentDirectory(), "")}."); + return updated; } - protected virtual string GetLatestVersion(JProperty package) + protected virtual async Task GetLatestVersion(JProperty package, string currentVersion, + bool includePreviews = false, bool switchToStable = false) { if (_fileVersionStorage.ContainsKey(package.Name)) { return _fileVersionStorage[package.Name]; } - var version = CmdHelper.RunCmdAndGetOutput($"npm show {package.Name} version"); + string newVersion = currentVersion; + + if (includePreviews || (!switchToStable && currentVersion.Contains("-preview"))) + { + var mygetPackage = (await _myGetPackageListFinder.GetPackages()).Packages.FirstOrDefault(p => p.Id == package.Name); + if (mygetPackage != null) + { + newVersion = mygetPackage.Versions.Last(); + } + } + else + { + newVersion = CmdHelper.RunCmdAndGetOutput($"npm show {package.Name} version"); + } + - _fileVersionStorage[package.Name] = version; + _fileVersionStorage[package.Name] = newVersion; - return version; + return newVersion; } protected virtual List GetAbpPackagesFromPackageJson(JObject fileObject) { - var dependencyList = new [] { "dependencies", "devDependencies", "peerDependencies" }; + var dependencyList = new[] { "dependencies", "devDependencies", "peerDependencies" }; var abpPackages = new List(); foreach (var dependencyListName in dependencyList) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs new file mode 100644 index 0000000000..3e651b3bf1 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs @@ -0,0 +1,76 @@ +using System; +using System.IO; +using System.Xml; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class PackageSourceAdder: ITransientDependency + { + public ILogger Logger { get; set; } + + public PackageSourceAdder() + { + Logger = NullLogger.Instance; + } + + public void Add(string sourceKey, string sourceValue) + { + var nugetConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + "NuGet", "NuGet.Config"); + + if (!File.Exists(nugetConfigPath)) + { + return; + } + + var fileContent = File.ReadAllText(nugetConfigPath); + + if (fileContent.Contains($"\"{sourceValue}\"")) + { + return; + } + + Logger.LogInformation($"Adding \"{sourceValue}\" ({sourceKey}) to nuget sources..."); + + try + { + var doc = new XmlDocument() { PreserveWhitespace = true }; + + doc.Load(GenerateStreamFromString(fileContent)); + + var sourceNodes = doc.SelectNodes("/configuration/packageSources"); + + var newNode = doc.CreateElement("add"); + + var includeAttr = doc.CreateAttribute("key"); + includeAttr.Value = sourceKey; + newNode.Attributes.Append(includeAttr); + + var versionAttr = doc.CreateAttribute("value"); + versionAttr.Value = sourceValue; + newNode.Attributes.Append(versionAttr); + + sourceNodes?[0]?.AppendChild(newNode); + + File.WriteAllText(nugetConfigPath, doc.OuterXml); + } + catch + { + Logger.LogWarning($"Adding \"{sourceValue}\" ({sourceKey}) to nuget sources FAILED."); + } + } + + private static Stream GenerateStreamFromString(string s) + { + var stream = new MemoryStream(); + var writer = new StreamWriter(stream); + writer.Write(s); + writer.Flush(); + stream.Position = 0; + return stream; + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs new file mode 100644 index 0000000000..e860a68ba8 --- /dev/null +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceSwitcher.cs @@ -0,0 +1,86 @@ +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; +using Volo.Abp.Cli.Args; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Cli.ProjectModification +{ + public class PackageSourceSwitcher : ITransientDependency + { + private readonly PackageSourceAdder _packageSourceAdder; + private readonly NpmPackagesUpdater _npmPackagesUpdater; + private readonly VoloNugetPackagesVersionUpdater _nugetPackagesVersionUpdater; + + public ILogger Logger { get; set; } + + public PackageSourceSwitcher(PackageSourceAdder packageSourceAdder, + NpmPackagesUpdater npmPackagesUpdater, + VoloNugetPackagesVersionUpdater nugetPackagesVersionUpdater) + { + _packageSourceAdder = packageSourceAdder; + _npmPackagesUpdater = npmPackagesUpdater; + _nugetPackagesVersionUpdater = nugetPackagesVersionUpdater; + Logger = NullLogger.Instance; + } + + public async Task SwitchToPreview(CommandLineArgs commandLineArgs) + { + _packageSourceAdder.Add("ABP Nightly", "https://www.myget.org/F/abp-nightly/api/v3/index.json"); + + await _nugetPackagesVersionUpdater.UpdateSolutionAsync( + GetSolutionPath(commandLineArgs), + true); + + await _npmPackagesUpdater.Update( + Path.GetFileName(GetSolutionPath(commandLineArgs)), + true); + } + + public async Task SwitchToStable(CommandLineArgs commandLineArgs) + { + await _nugetPackagesVersionUpdater.UpdateSolutionAsync( + GetSolutionPath(commandLineArgs), + false, + true); + + await _npmPackagesUpdater.Update( + Path.GetFileName(GetSolutionPath(commandLineArgs)), + false, + true); + } + + + private string GetSolutionPath(CommandLineArgs commandLineArgs) + { + var solutionPath = commandLineArgs.Options.GetOrNull(Options.SolutionPath.Short, Options.SolutionPath.Long); + + if (solutionPath == null) + { + try + { + solutionPath = Directory.GetFiles(Directory.GetCurrentDirectory(), "*.sln").Single(); + } + catch (Exception) + { + Logger.LogError("There is no solution or more that one solution in current directory."); + throw; + } + } + + return solutionPath; + } + + public static class Options + { + public static class SolutionPath + { + public const string Short = "sp"; + public const string Long = "solution-path"; + } + } + } +} diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs index d5756a4566..da8ded6a20 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/VoloNugetPackagesVersionUpdater.cs @@ -1,6 +1,7 @@ using System; using NuGet.Versioning; using System.IO; +using System.Linq; using System.Threading.Tasks; using System.Xml; using Volo.Abp.Cli.NuGet; @@ -13,37 +14,39 @@ namespace Volo.Abp.Cli.ProjectModification public class VoloNugetPackagesVersionUpdater : ITransientDependency { private readonly NuGetService _nuGetService; + private readonly MyGetPackageListFinder _myGetPackageListFinder; public ILogger Logger { get; set; } - public VoloNugetPackagesVersionUpdater(NuGetService nuGetService) + public VoloNugetPackagesVersionUpdater(NuGetService nuGetService, MyGetPackageListFinder myGetPackageListFinder) { _nuGetService = nuGetService; + _myGetPackageListFinder = myGetPackageListFinder; Logger = NullLogger.Instance; } - public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews) + public async Task UpdateSolutionAsync(string solutionPath, bool includePreviews = false, bool switchToStable = false) { var projectPaths = ProjectFinder.GetProjectFiles(solutionPath); foreach (var filePath in projectPaths) { - await UpdateInternalAsync(filePath, includePreviews); + await UpdateInternalAsync(filePath, includePreviews, switchToStable); } } - public async Task UpdateProjectAsync(string projectPath, bool includePreviews) + public async Task UpdateProjectAsync(string projectPath, bool includePreviews = false, bool switchToStable = false) { - await UpdateInternalAsync(projectPath, includePreviews); + await UpdateInternalAsync(projectPath, includePreviews, switchToStable); } - protected virtual async Task UpdateInternalAsync(string projectPath, bool includePreviews) + protected virtual async Task UpdateInternalAsync(string projectPath, bool includePreviews = false, bool switchToStable = false) { var fileContent = File.ReadAllText(projectPath); - File.WriteAllText(projectPath, await UpdateVoloPackagesAsync(fileContent, includePreviews)); + File.WriteAllText(projectPath, await UpdateVoloPackagesAsync(fileContent, includePreviews, switchToStable)); } - private async Task UpdateVoloPackagesAsync(string content, bool includePreviews) + private async Task UpdateVoloPackagesAsync(string content, bool includePreviews = false, bool switchToStable = false) { string packageId = null; @@ -67,23 +70,44 @@ namespace Volo.Abp.Cli.ProjectModification continue; } - var versionAttribute = package.Attributes["Version"]; - packageId = package.Attributes["Include"].Value; - var packageVersion = SemanticVersion.Parse(versionAttribute.Value); + + var versionAttribute = package.Attributes["Version"]; + var currentVersion = versionAttribute.Value; + var packageVersion = SemanticVersion.Parse(currentVersion); Logger.LogDebug("Checking package: \"{0}\" - Current version: {1}", packageId, packageVersion); - var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId, includePreviews); - if (latestVersion != null && packageVersion < latestVersion) + if (includePreviews || (currentVersion.Contains("-preview") && !switchToStable)) { - Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, packageVersion.ToString(), latestVersion.ToString()); - versionAttribute.Value = latestVersion.ToString(); + var latestVersion = (await _myGetPackageListFinder.GetPackages()).Packages + .FirstOrDefault(p => p.Id == packageId) + ?.Versions.LastOrDefault(); + + if (currentVersion != latestVersion) + { + Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, currentVersion, latestVersion); + versionAttribute.Value = latestVersion; + } + else + { + Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, currentVersion); + } } else { - Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, packageVersion); + var latestVersion = await _nuGetService.GetLatestVersionOrNullAsync(packageId); + + if (latestVersion != null && (currentVersion.Contains("-preview") || packageVersion < latestVersion)) + { + Logger.LogInformation("Updating package \"{0}\" from v{1} to v{2}.", packageId, packageVersion.ToString(), latestVersion.ToString()); + versionAttribute.Value = latestVersion.ToString(); + } + else + { + Logger.LogDebug("Package: \"{0}-v{1}\" is up to date.", packageId, packageVersion); + } } } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/BasicThemeDemoMenuContributor.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/BasicThemeDemoMenuContributor.cs index ed14ca2f16..20f0332c8b 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/BasicThemeDemoMenuContributor.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/BasicThemeDemoMenuContributor.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Volo.Abp.UI.Navigation; @@ -38,6 +39,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo new ApplicationMenuItem("BasicThemeDemo.Components.ListGroups", "List Groups", url: "/Components/ListGroups"), new ApplicationMenuItem("BasicThemeDemo.Components.Modals", "Modals", url: "/Components/Modals"), new ApplicationMenuItem("BasicThemeDemo.Components.Navs", "Navs", url: "/Components/Navs"), + new ApplicationMenuItem("BasicThemeDemo.Components.Navbars", "Navbars", url: "/Components/Navbars"), new ApplicationMenuItem("BasicThemeDemo.Components.Paginator", "Paginator", url: "/Components/Paginator"), new ApplicationMenuItem("BasicThemeDemo.Components.Popovers", "Popovers", url: "/Components/Popovers"), new ApplicationMenuItem("BasicThemeDemo.Components.ProgressBars", "Progress Bars", url: "/Components/ProgressBars"), @@ -45,8 +47,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo new ApplicationMenuItem("BasicThemeDemo.Components.Tabs", "Tabs", url: "/Components/Tabs"), new ApplicationMenuItem("BasicThemeDemo.Components.Tooltips", "Tooltips", url: "/Components/Tooltips") }; - - items.ForEach(x => menuItem.AddItem(x)); + + items.OrderBy(x => x.Name) + .ToList() + .ForEach(x => menuItem.AddItem(x)); context.Menu.AddItem(menuItem); } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Alerts/Index.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Alerts/Index.cshtml index d02be8912e..245cc0cacd 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Alerts/Index.cshtml +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Alerts/Index.cshtml @@ -1,7 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.AlertsDemo @model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Alerts.IndexModel -

Alerts

Based on Bootstrap Alert.

diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Badges/Index.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Badges/Index.cshtml index 21e8be5bcf..31a03ec2a9 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Badges/Index.cshtml +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Badges/Index.cshtml @@ -1,7 +1,6 @@ @page @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.BadgesDemo @model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Badges.IndexModel -

Badges

Based on Bootstrap Badge.

diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Buttons/Index.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Buttons/Index.cshtml index 32b2c376b2..317a6d2510 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Buttons/Index.cshtml +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Buttons/Index.cshtml @@ -2,5 +2,6 @@ @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.ButtonsDemo @model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Buttons.IndexModel

Buttons

+

Based on Bootstrap Buttons.

@await Component.InvokeAsync(typeof(ButtonsDemoViewComponent)) \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navbars/Index.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navbars/Index.cshtml new file mode 100644 index 0000000000..52c8ccb41f --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navbars/Index.cshtml @@ -0,0 +1,7 @@ +@page +@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.NavbarsDemo +@model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Modals.IndexModel +

Navbars

+

Based on Bootstrap Navbar.

+ +@await Component.InvokeAsync(typeof(NavbarsDemoViewComponent)) \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navbars/Index.cshtml.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navbars/Index.cshtml.cs new file mode 100644 index 0000000000..c2814e6686 --- /dev/null +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navbars/Index.cshtml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo +{ + public class IndexModel : PageModel + { + public void OnGet() + { + + } + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navs/Index.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navs/Index.cshtml index 3bda329ce3..a22f1cd47d 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navs/Index.cshtml +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Navs/Index.cshtml @@ -2,6 +2,6 @@ @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.NavsDemo @model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Navs.IndexModel

Navs

-

Based on Bootstrap Navs.

+

Based on Bootstrap Navs.

@await Component.InvokeAsync(typeof(NavsDemoViewComponent)) \ No newline at end of file diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Tables/Index.cshtml b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Tables/Index.cshtml index f45ccb2f47..a2048c7384 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Tables/Index.cshtml +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Pages/Components/Tables/Index.cshtml @@ -2,6 +2,6 @@ @using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Demo.Views.Components.Themes.Shared.Demos.TablesDemo @model Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo.Pages.Components.Tables.IndexModel

Tables

-

Based on Bootstrap Tables.

+

Based on Bootstrap Tables.

@await Component.InvokeAsync(typeof(TablesDemoViewComponent)) \ No newline at end of file diff --git a/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/sl.json b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/sl.json new file mode 100644 index 0000000000..d95e591f8a --- /dev/null +++ b/modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/sl.json @@ -0,0 +1,45 @@ +{ + "culture": "sl", + "texts": { + "UserName": "Uporabniško ime", + "EmailAddress": "E-poštni naslov", + "UserNameOrEmailAddress": "Uporabniško ime ali e-poštni naslov", + "Password": "Geslo", + "RememberMe": "Zapomni si me", + "UseAnotherServiceToLogin": "Uporabi drugo storitev za prijavo", + "UserLockedOutMessage": "Uporabniški račun je bil zaklenjen zaradi neveljavnih poskusov prijave. Počakajte nekaj časa in poskusite znova.", + "InvalidUserNameOrPassword": "Napačno uporabniško ime ali geslo!", + "LoginIsNotAllowed": "Nimate dovoljenja za prijavo! Potrditi morate e-poštni naslov/telefonsko številko.", + "SelfRegistrationDisabledMessage": "Možnost lastne registracije uporabnika je onemogočena za to aplikacijo. Kontaktirajte skrbnika aplikacije, da registrirate novega uporabnika.", + "LocalLoginDisabledMessage": "Lokalna prijava za to aplikacijo je onemogočena.", + "Login": "Prijava", + "Cancel": "Prekliči", + "Register": "Registracija", + "AreYouANewUser": "Ste nov uporabnik?", + "AlreadyRegistered": "Ste že registrirani?", + "InvalidLoginRequest": "Nepravilna zahteva za prijavo", + "ThereAreNoLoginSchemesConfiguredForThisClient": "Za to stranko ni konfiguriranih prijavnih shem.", + "LogInUsingYourProviderAccount": "Prijavite se z uporabo vašega {0} računa", + "DisplayName:CurrentPassword": "Trenutno geslo", + "DisplayName:NewPassword": "Novo geslo", + "DisplayName:NewPasswordConfirm": "Potrdite novo geslo", + "PasswordChangedMessage": "Vaše geslo je bilo uspešno spremenjeno.", + "DisplayName:UserName": "Uporabniško ime", + "DisplayName:Email": "E-poštni naslov", + "DisplayName:Name": "Ime", + "DisplayName:Surname": "Priimek", + "DisplayName:Password": "Password", + "DisplayName:EmailAddress": "E-poštni naslov", + "DisplayName:PhoneNumber": "Telefonska številka", + "PersonalSettings": "Osebne nastavitve", + "PersonalSettingsSaved": "Osebne nastavitve so shranjene", + "PasswordChanged": "Geslo je spremenjeno", + "NewPasswordConfirmFailed": "Prosimo potrdite novo geslo.", + "Manage": "Upravljaj", + "ManageYourProfile": "Upravljaj svoj profil", + "DisplayName:Abp.Account.IsSelfRegistrationEnabled": "Je lastna registracija uporabnika omogočena", + "Description:Abp.Account.IsSelfRegistrationEnabled": "Ali lahko uporabnik sam registrira račun.", + "DisplayName:Abp.Account.EnableLocalLogin": "Avtenticirajte se z lokalnim računom", + "Description:Abp.Account.EnableLocalLogin": "Označuje, ali bo strežnik uporabnikom omogočil avtentikacijo z lokalnim računom." + } +} diff --git a/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/sl.json b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/sl.json new file mode 100644 index 0000000000..a834583f0a --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Application.Contracts/Volo/Blogging/Localization/Resources/Blogging/ApplicationContracts/sl.json @@ -0,0 +1,14 @@ +{ + "culture": "sl", + "texts": { + "Permission:Blogging": "Blog", + "Permission:Blogs": "Blogi", + "Permission:Posts": "Objave", + "Permission:Tags": "Oznake", + "Permission:Comments": "Komentarji", + "Permission:Management": "Upravljanje", + "Permission:Edit": "Urejanje", + "Permission:Create": "Ustvarjanje", + "Permission:Delete": "Brisanje" + } +} \ No newline at end of file diff --git a/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/sl.json b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/sl.json new file mode 100644 index 0000000000..74672336f5 --- /dev/null +++ b/modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/sl.json @@ -0,0 +1,47 @@ +{ + "culture": "sl", + "texts": { + "Menu:Blogs": "Blogi", + "Menu:BlogManagement": "Upravljanje bloga", + "Title": "Naslov", + "Delete": "Izbriši", + "Reply": "Odgovori", + "ReplyTo": "Odgovori {0}", + "ContinueReading": "Nadaljuj z branjem", + "DaysAgo": "{0} dni nazaj", + "YearsAgo": "{0} let nazaj", + "MonthsAgo": "{0} mesecev nazaj", + "WeeksAgo": "{0} tednov nazaj", + "MinutesAgo": "{0} minut nazaj", + "SecondsAgo": "{0} sekund nazaj", + "HoursAgo": "{0} ur nazaj", + "Now": "zdaj", + "Content": "Vsebina", + "SeeAll": "Poglej vse", + "PopularTags": "Priljubljene oznake", + "WiewsWithCount": "{0} ogledov", + "LastPosts": "Zadnje objave", + "LeaveComment": "Pusti komentar", + "TagsInThisArticle": "Oznake v tem članku", + "Posts": "Objave", + "Edit": "Uredi", + "BLOG": "BLOG", + "CommentDeletionWarningMessage": "Komentar bo izbrisan.", + "PostDeletionWarningMessage": "Objava bo izbrisana.", + "BlogDeletionWarningMessage": "Blog bo izbrisan.", + "AreYouSure": "Ali ste prepričani?", + "CommentWithCount": "{0} komentarjev", + "Comment": "Komentiraj", + "ShareOnTwitter": "Deli na Twitterju", + "CoverImage": "Naslovna slika", + "CreateANewPost": "Ustvari novo objavo", + "CreateANewBlog": "Ustvari nov blog", + "WhatIsNew": "Kaj je novega?", + "Name": "Naziv", + "ShortName": "Kratek naziv", + "CreationTime": "Čas nastanka", + "Description": "Opis", + "Blogs": "Blogi", + "Tags": "Oznake" + } +} \ No newline at end of file diff --git a/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/sl.json b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/sl.json new file mode 100644 index 0000000000..d09b9c88ce --- /dev/null +++ b/modules/docs/app/VoloDocs.Web/Localization/Resources/VoloDocs/Web/sl.json @@ -0,0 +1,10 @@ +{ + "culture": "sl", + "texts": { + "DocsTitle": "VoloDocs", + "WelcomeVoloDocs": "Dobrodošli na VoloDocs!", + "NoProjectWarning": "Ni še definiranega nobenega projekta!", + "CreateYourFirstProject": "Kliknite tukaj, da začnete svoj prvi projekt", + "NoProject": "Ni projekta!" + } +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/sl.json b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/sl.json new file mode 100644 index 0000000000..436f365df3 --- /dev/null +++ b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/sl.json @@ -0,0 +1,37 @@ +{ + "culture": "sl", + "texts": { + "Permission:DocumentManagement": "Upravljanje dokumentov", + "Permission:Projects": "Projekti", + "Permission:Edit": "Urejanje", + "Permission:Delete": "Brisanje", + "Permission:Create": "Ustvarjanje", + "Permission:Documents": "Dokumenti", + "Menu:DocumentManagement": "Dokumenti", + "Menu:ProjectManagement": "Projekti", + "CreateANewProject": "Ustvari nov projekt", + "Edit": "Uredi", + "Create": "Ustvari", + "Pull": "Prenesi", + "Projects": "Projekti", + "Name": "Name", + "ShortName": "ShortName", + "DocumentStoreType": "DocumentStoreType", + "Format": "Format", + "ShortNameInfoText": "Bo uporabljen za unikaten URL.", + "DisplayName:Name": "Naziv", + "DisplayName:ShortName": "Kratek naziv", + "DisplayName:Format": "Format", + "DisplayName:DefaultDocumentName": "Privzeti naziv dokumenta", + "DisplayName:NavigationDocumentName": "Naziv dokumenta za navigacijo", + "DisplayName:MinimumVersion": "Najnižja verzija", + "DisplayName:MainWebsiteUrl": "URL glavne strani", + "DisplayName:LatestVersionBranchName": "Naziv veje zadnje verzije", + "DisplayName:GitHubRootUrl": "Korenski URL na GitHub", + "DisplayName:GitHubAccessToken": "GitHub access token", + "DisplayName:GitHubUserAgent": "GitHub user agent", + "DisplayName:All": "Prenesi vse", + "DisplayName:LanguageCode": "Koda jezika", + "DisplayName:Version": "Verzija" + } +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/vi.sjon b/modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/vi.json similarity index 100% rename from modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/vi.sjon rename to modules/docs/src/Volo.Docs.Admin.Application.Contracts/Volo/Docs/Admin/Localization/Resources/Docs/ApplicationContracts/vi.json diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/sl.json b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/sl.json new file mode 100644 index 0000000000..a923b17540 --- /dev/null +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/Localization/Domain/sl.json @@ -0,0 +1,26 @@ +{ + "culture": "sl", + "texts": { + "Documents": "Dokumenti", + "BackToWebsite": "Nazaj na spletno stran", + "Contributors": "Sodelujoči", + "ShareOn": "Deli na", + "Version": "Verzija", + "Edit": "Uredi", + "LastEditTime": "Zadnje urejanje", + "Delete": "Izbriši", + "InThisDocument": "V tem dokumentu", + "GoToTop": "Pojdi na vrh", + "Projects": "Projekt(i)", + "NoProjectWarning": "Ni še nobenega projekta!", + "DocumentNotFound": "Ups, zahtevanega dokumenta ni bilo mogoče najti!", + "NavigationDocumentNotFound": "Ta verzija nima navigacijskega dokumenta!", + "DocumentNotFoundInSelectedLanguage": "Dokumenta v želenem jeziku ni mogoče najti. Prikazan je dokument v privzetem jeziku.", + "FilterTopics": "Filtriraj teme", + "MultipleVersionDocumentInfo": "Ta dokument ima več verzij. Izberite možnosti, ki so najprimernejše.", + "New": "Nov", + "Upd": "Posod.", + "NewExplanation": "Ustvarjeno v zadnjih dveh tednih.", + "UpdatedExplanation": "Posodobljeno v zadnjih dveh tednih." + } +} \ No newline at end of file diff --git a/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/sl.json b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/sl.json new file mode 100644 index 0000000000..58f37e93c8 --- /dev/null +++ b/modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/sl.json @@ -0,0 +1,7 @@ +{ + "culture": "sl", + "texts": { + "Features": "Funkcionalnosti", + "NoFeatureFoundMessage": "Na voljo ni nobene funkcionalnosti." + } +} \ No newline at end of file diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json new file mode 100644 index 0000000000..5f3cd96c55 --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/sl.json @@ -0,0 +1,102 @@ +{ + "culture": "sl", + "texts": { + "Menu:IdentityManagement": "Upravljanje identitet", + "Users": "Uporabniki", + "NewUser": "Nov uporabnik", + "UserName": "Uporabniško ime", + "EmailAddress": "E-poštni naslov", + "PhoneNumber": "Telefonska številka", + "UserInformations": "Informacije o uporabniku", + "DisplayName:IsDefault": "Privzeto", + "DisplayName:IsStatic": "Statično", + "DisplayName:IsPublic": "Javno", + "Roles": "Vloge", + "Password": "Geslo", + "PersonalInfo": "Moj profil", + "PersonalSettings": "Osebne nastavitve", + "UserDeletionConfirmationMessage": "Uporabnik '{0}' bo izbrisan. Ali to potrjujete?", + "RoleDeletionConfirmationMessage": "Vloga '{0}' bo izbrisana. Ali to potrjujete?", + "DisplayName:RoleName": "Naziv vloge", + "DisplayName:UserName": "Uporabniško ime", + "DisplayName:Name": "Ime", + "DisplayName:Surname": "Priimek", + "DisplayName:Password": "Geslo", + "DisplayName:Email": "E-poštni naslov", + "DisplayName:PhoneNumber": "Telefonska številka", + "DisplayName:TwoFactorEnabled": "Dvostopenjsko preverjanje", + "DisplayName:LockoutEnabled": "Zaklepanje računa po neuspelih poskusih prijave", + "NewRole": "Nova vloga", + "RoleName": "Naziv vloge", + "CreationTime": "Čas nastanka", + "Permissions": "Dovoljenja", + "DisplayName:CurrentPassword": "Trenutno geslo", + "DisplayName:NewPassword": "Novo geslo", + "DisplayName:NewPasswordConfirm": "Potrdite novo geslo", + "PasswordChangedMessage": "Vaše geslo je bilo uspešno spremenjeno.", + "PersonalSettingsSavedMessage": "Vaše osebne nastavitve so bile uspešno shranjene.", + "Identity.DefaultError": "Zgodila se je neznana napaka.", + "Identity.ConcurrencyFailure": "Napaka pri optimistični sočasnosti, objekt je bil spremenjen.", + "Identity.DuplicateEmail": "E-poštni naslov '{0}' je že zaseden.", + "Identity.DuplicateRoleName": "Naziv vloge '{0}' je že zasedeno.", + "Identity.DuplicateUserName": "Uporabniško ime '{0}' je že zasedeno.", + "Identity.InvalidEmail": "E-poštni naslov '{0}' ni veljaven.", + "Identity.InvalidPasswordHasherCompatibilityMode": "Navedeni PasswordHasherCompatibilityMode ni veljaven.", + "Identity.InvalidPasswordHasherIterationCount": "Število iteracij mora biti pozitivno celo število.", + "Identity.InvalidRoleName": "Naziv vloge '{0}' ni veljaven.", + "Identity.InvalidToken": "Neveljaven žeton.", + "Identity.InvalidUserName": "Uporabniško ime '{0}' ni veljavno, vsebuje lahko le črke in številke.", + "Identity.LoginAlreadyAssociated": "Uporabnik s to prijavo že obstaja.", + "Identity.PasswordMismatch": "Nepravilno geslo.", + "Identity.PasswordRequiresDigit": "Gesla morajo imeti vsaj eno številko ('0'-'9').", + "Identity.PasswordRequiresLower": "Gesla morajo imeti vsaj eno malo črko ('a'-'z').", + "Identity.PasswordRequiresNonAlphanumeric": "Gesla morajo imeti vsaj en ne-alfanumerični znak.", + "Identity.PasswordRequiresUpper": "Gesla morajo imeti vsaj eno veliko črko ('A'-'Z').", + "Identity.PasswordTooShort": "Gesla morajo biti dolga vsaj {0} znakov.", + "Identity.RoleNotFound": "Vloga {0} ne obstaja.", + "Identity.UserAlreadyHasPassword": "Uporabnik že ima nastavljeno geslo.", + "Identity.UserAlreadyInRole": "Uporabnik že ima dodeljeno vlogo '{0}'.", + "Identity.UserLockedOut": "Uporabnik je zaklenjen.", + "Identity.UserLockoutNotEnabled": "Zaklepanje za tega uporabnika ni omogočeno.", + "Identity.UserNameNotFound": "Uporabnik {0} ne obstaja.", + "Identity.UserNotInRole": "Uporabnik nima dodeljene vloge '{0}'.", + "Identity.PasswordConfirmationFailed": "Geslo se ne ujema s potrditvenim geslom.", + "Identity.StaticRoleRenamingErrorMessage": "Statičnih vlog ni mogoče preimenovati.", + "Identity.StaticRoleDeletionErrorMessage": "Statičnih vlog ni mogoče izbrisati.", + "Volo.Abp.Identity:010001": "Ne morete izbrisati svojega lastnega računa!", + "Permission:IdentityManagement": "Upravljanje identitet", + "Permission:RoleManagement": "Upravljanje vlog", + "Permission:Create": "Ustvarjanje", + "Permission:Edit": "Urejanje", + "Permission:Delete": "Brisanje", + "Permission:ChangePermissions": "Spreminjanje dovoljenj", + "Permission:UserManagement": "Upravljanje uporabnikov", + "Permission:UserLookup": "Iskanje uporabnikov", + "DisplayName:Abp.Identity.Password.RequiredLength": "Zahtevana dolžina", + "DisplayName:Abp.Identity.Password.RequiredUniqueChars": "Zahtevano število unikatnih znakov", + "DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "Zahtevan ne-alfanumeričen znak", + "DisplayName:Abp.Identity.Password.RequireLowercase": "Zahtevana mala črka", + "DisplayName:Abp.Identity.Password.RequireUppercase": "Zahtevana velika črka", + "DisplayName:Abp.Identity.Password.RequireDigit": "Zahtevana številka", + "DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "Omogočeno za nove uporabnike", + "DisplayName:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaklepa(sekund)", + "DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Največje število neuspešnih poskusov dostopa", + "DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "Zahtevan potrjen e-poštni naslov", + "DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Zahtevana potrjena telefonska številka", + "DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "Omogočena posodobitev uporabniškega imena", + "DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "Omogočena posodobitev e-poštnega naslova", + "Description:Abp.Identity.Password.RequiredLength": "Najkrajša dolžina gesla mora biti.", + "Description:Abp.Identity.Password.RequiredUniqueChars": "Najmanjše število unikatnih znakov, ki jih mora vsebovati geslo.", + "Description:Abp.Identity.Password.RequireNonAlphanumeric": "Ali morajo gesla vsebovati ne-alfanumerični znak.", + "Description:Abp.Identity.Password.RequireLowercase": "Ali morajo gesla vsebovati mali ASCII znak.", + "Description:Abp.Identity.Password.RequireUppercase": "Ali morajo gesla vsebovati veliki ASCII znak.", + "Description:Abp.Identity.Password.RequireDigit": "Ali morajo gesla vsebovati številko.", + "Description:Abp.Identity.Lockout.AllowedForNewUsers": "Ali se nov uporabnik lahko zaklene.", + "Description:Abp.Identity.Lockout.LockoutDuration": "Trajanje zaklepa uporabnika, ko pride do zaklepa.", + "Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "Število neuspelih poskusov dostopa ki so dovoljeni, preden se uporabnik zaklene, ob predpostavki, da je zaklepanje omogočeno.", + "Description:Abp.Identity.SignIn.RequireConfirmedEmail": "Ali je za prijavo potreben potrjeni e-poštni naslov.", + "Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "Ali je za prijavo potrebna potrjena telefonska številka.", + "Description:Abp.Identity.User.IsUserNameUpdateEnabled": "Ali lahko uporabnik posodobi uporabniško ime.", + "Description:Abp.Identity.User.IsEmailUpdateEnabled": "Ali lahko uporabnik posodobi e-poštni naslov." + } +} diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/sl.json b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/sl.json new file mode 100644 index 0000000000..b73f64b00e --- /dev/null +++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/sl.json @@ -0,0 +1,12 @@ +{ + "culture": "sl", + "texts": { + "Volo.IdentityServer:DuplicateIdentityResourceName": "Naziv vira identitete že obstaja: {Name}", + "Volo.IdentityServer:DuplicateApiResourceName": "Naziv vira Api že obstaja: {Name}", + "Volo.IdentityServer:DuplicateClientId": "ClientId že obstaja: {ClientId}", + "UserLockedOut": "Uporabniški račun je bil blokiran zaradi neveljavnih poskusov prijave. Počakajte nekaj časa in poskusite znova.", + "InvalidUserNameOrPassword": "Napačno uporabniško ime ali geslo!", + "LoginIsNotAllowed": "Nimate dovoljenja za prijavo! Potrditi morate svojo e-pošto / telefonsko številko.", + "InvalidUsername": "Napačno uporabniško ime ali geslo!" + } +} \ No newline at end of file diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/sl.json b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/sl.json new file mode 100644 index 0000000000..c6b0231912 --- /dev/null +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/sl.json @@ -0,0 +1,10 @@ +{ + "culture": "sl", + "texts": { + "Permissions": "Dovoljenja", + "OnlyProviderPermissons": "Samo ta ponudnik", + "All": "Vse", + "SelectAllInAllTabs": "Dodeli vsa dovoljenja", + "SelectAllInThisTab": "Izberi vse" + } +} \ No newline at end of file diff --git a/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/sl.json b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/sl.json new file mode 100644 index 0000000000..3c9d338828 --- /dev/null +++ b/modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/sl.json @@ -0,0 +1,7 @@ +{ + "culture": "sl", + "texts": { + "Settings": "Nastavitve", + "SuccessfullySaved": "Uspešno shranjeno" + } +} \ No newline at end of file diff --git a/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/sl.json b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/sl.json new file mode 100644 index 0000000000..e183796f05 --- /dev/null +++ b/modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/sl.json @@ -0,0 +1,20 @@ +{ + "culture": "sl", + "texts": { + "Menu:TenantManagement": "Upravljanje najemnikov", + "Tenants": "Najemniki", + "NewTenant": "Nov najemnik", + "TenantName": "Naziv najemnika", + "DisplayName:TenantName": "Naziv najemnika", + "TenantDeletionConfirmationMessage": "Najemnik '{0}' bo izbrisan. Ali to potrjujete?", + "ConnectionStrings": "Connection Strings", + "DisplayName:DefaultConnectionString": "Privzeti Connection String", + "DisplayName:UseSharedDatabase": "Uporabi skupno bazo", + "Permission:TenantManagement": "Upravljanje najemnikov", + "Permission:Create": "Ustvarjanje", + "Permission:Edit": "Urejanje", + "Permission:Delete": "Brisanje", + "Permission:ManageConnectionStrings": "Upravljanje connection string-ov", + "Permission:ManageFeatures": "Upravljanje funkcionalnosti" + } +} \ No newline at end of file diff --git a/npm/ng-packs/packages/core/src/lib/plugins/config.plugin.ts b/npm/ng-packs/packages/core/src/lib/plugins/config.plugin.ts index a07b613b44..a638e32204 100644 --- a/npm/ng-packs/packages/core/src/lib/plugins/config.plugin.ts +++ b/npm/ng-packs/packages/core/src/lib/plugins/config.plugin.ts @@ -8,10 +8,10 @@ import { setValue, UpdateState, } from '@ngxs/store'; +import clone from 'just-clone'; import snq from 'snq'; import { ABP } from '../models'; -import { organizeRoutes, getAbpRoutes } from '../utils/route-utils'; -import clone from 'just-clone'; +import { getAbpRoutes, organizeRoutes } from '../utils/route-utils'; export const NGXS_CONFIG_PLUGIN_OPTIONS = new InjectionToken('NGXS_CONFIG_PLUGIN_OPTIONS'); @@ -28,7 +28,7 @@ export class ConfigPlugin implements NgxsPlugin { const matches = actionMatcher(event); const isInitAction = matches(InitState) || matches(UpdateState); - if (isInitAction && !this.initialized) { + if (isInitAction && !this.initialized && getAbpRoutes().length) { const transformedRoutes = transformRoutes(this.router.config); let { routes } = transformedRoutes; const { wrappers } = transformedRoutes; diff --git a/npm/ng-packs/packages/core/src/lib/services/auth.service.ts b/npm/ng-packs/packages/core/src/lib/services/auth.service.ts index 5ae13a4012..0c38b22acf 100644 --- a/npm/ng-packs/packages/core/src/lib/services/auth.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/auth.service.ts @@ -50,11 +50,17 @@ export class AuthService { } logout(): Observable { + const issuer = this.store.selectSnapshot(ConfigState.getDeep('environment.oAuthConfig.issuer')); + return this.rest - .request({ - method: 'GET', - url: '/api/account/logout', - }) + .request( + { + method: 'GET', + url: '/api/account/logout', + }, + null, + issuer, + ) .pipe( switchMap(() => { this.oAuthService.logOut();