Browse Source

Merge branch 'dev' into salihozkara/SecurityHeader

pull/16496/head
Salih 3 years ago
parent
commit
ccd89c4376
  1. 2
      abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json
  2. 5
      abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json
  3. 5
      abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json
  4. 4
      configureawait.props
  5. 2
      docs/en/CLI.md
  6. 33
      docs/en/KB/Windows-Path-Too-Long-Fix.md
  7. 13
      docs/en/Startup-Templates/Application.md
  8. 4
      docs/en/UI/AspNetCore/Tag-Helpers/Dropdowns.md
  9. 4
      docs/en/docs-nav.json
  10. BIN
      docs/en/images/layered-project-dependencies-blazor-server.png
  11. BIN
      docs/en/images/layered-project-dependencies-blazor-wasm.png
  12. 2
      docs/zh-Hans/CLI.md
  13. 1
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs
  14. 39
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs
  15. 9
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelperService.cs
  16. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js
  17. 21
      framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor
  18. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs
  19. 59
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ClearDownloadCacheCommand.cs
  20. 37
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs
  21. 38
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs
  22. 12
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoSourceCodeStore.cs
  23. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ISourceCodeStore.cs
  24. 6
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs
  25. 76
      framework/src/Volo.Abp.Core/Volo/Abp/Threading/SemaphoreSlimExtensions.cs
  26. 6
      framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Uow/EntityFrameworkCore/EfCoreTransactionApi.cs
  27. 4
      framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs
  28. 2
      framework/src/Volo.Abp.Uow/Volo/Abp/Uow/ISupportsRollback.cs
  29. 3
      framework/src/Volo.Abp.Uow/Volo/Abp/Uow/ITransactionApi.cs
  30. 6
      framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs
  31. 28
      framework/test/Volo.Abp.Core.Tests/Volo/Abp/Threading/SemaphoreSlimExtensions_Tests.cs
  32. 29
      framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Uow/UnitOfWork_CancellationToken_Tests.cs
  33. 31
      framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Uow/UnitOfWork_CancellationToken_Tests.cs
  34. 2
      latest-versions.json
  35. 2
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json
  36. 244
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock
  37. 4
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json
  38. 280
      modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock
  39. 4
      modules/blogging/app/Volo.BloggingTestApp/package.json
  40. 318
      modules/blogging/app/Volo.BloggingTestApp/yarn.lock
  41. 5
      modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json
  42. 141
      modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml
  43. 28
      modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.css
  44. 27
      modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css
  45. 223
      modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml
  46. 2
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json
  47. 258
      modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock
  48. 10
      modules/cms-kit/angular/package.json
  49. 4
      modules/cms-kit/angular/projects/cms-kit/package.json
  50. 2
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json
  51. 258
      modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock
  52. 2
      modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json
  53. 258
      modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock
  54. 4
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json
  55. 392
      modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock
  56. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs
  57. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs
  58. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostListDto.cs
  59. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogDto.cs
  60. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogPostDto.cs
  61. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs
  62. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs
  63. 77
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/CmsKitAdminApplicationContractsModule.cs
  64. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CmsUserDto.cs
  65. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs
  66. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs
  67. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesDto.cs
  68. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesUpdateDto.cs
  69. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorDto.cs
  70. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs
  71. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs
  72. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs
  73. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuUpdateInput.cs
  74. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/CreatePageInputDto.cs
  75. 2
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs
  76. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs
  77. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs
  78. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs
  79. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs
  80. 6
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs
  81. 26
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs
  82. 5
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs
  83. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs
  84. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs
  85. 56
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebAutoMapperProfile.cs
  86. 52
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs
  87. 48
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml
  88. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml.cs
  89. 50
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml
  90. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml.cs
  91. 48
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml
  92. 9
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml.cs
  93. 51
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml
  94. 7
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml.cs
  95. 40
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml
  96. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml.cs
  97. 40
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml
  98. 3
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs
  99. 43
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml
  100. 4
      modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml.cs

2
abp_io/AbpIoLocalization/AbpIoLocalization/Base/Localization/Resources/en.json

@ -70,7 +70,7 @@
"MeetTheABP": "Meet the ABP",
"CompleteWebDevelopment": "A Complete Web Development",
"Platform": "Platform",
"ABPDescription": "ABP Framework is a complete infrastructure to create modern web applications by following the software development best practices and conventions.",
"ABPDescription": "An open-source framework for web application development for ASP.NET Core. It offers complete infrastructure by following the best practices of software development.",
"StrongInfrastructure": "Strong Infrastructure",
"CompleteArchitecture": "Complete Architecture",
"DeveloperFocused": "Developer Focused",

5
abp_io/AbpIoLocalization/AbpIoLocalization/Commercial/Localization/Resources/en.json

@ -161,7 +161,7 @@
"WhatIsTheABPCommercial": "What is ABP Commercial?",
"WhatAreDifferencesThanAbpFramework": "What are the differences between the open source ABP Framework and ABP Commercial?",
"AbpCommercialMetaTitle": " {0} | ABP Commercial",
"AbpCommercialMetaDescription": "ABP Commercial is a set of pre-built application modules, rapid development tooling, UI themes and services built on top of the open-source ABP framework.",
"AbpCommercialMetaDescription": "A comprehensive web development platform on ABP Framework with pre-built modules, startup templates, rapid dev tools, pro UI themes & premium support.",
"ABPCommercialExplanation": "ABP Commercial is a set of premium modules, tools, themes and services that are built on top of the open source <a target=\"_blank\" href=\"{0}\">ABP framework</a>. ABP Commercial is being developed and supported by the same team behind the ABP framework.",
"WhatAreDifferencesThanABPFrameworkExplanation": "<p> <a target=\"_blank\" href=\"{0}\">ABP framework</a> is a modular, themeable, microservice compatible application development framework for ASP.NET Core. It provides a complete architecture and a strong infrastructure to let you focus on your own business code rather than repeating yourself for every new project. It is based on the best practices of software development and popular tools you already know. </p> <p> ABP framework is completely free, open source and community-driven. It also provides a free theme and some pre-built modules (e.g. identity management and tenant management).</p>",
"VisitTheFrameworkVSCommercialDocument": "Visit the following link for more information <a href=\"{0}\" target=\"_blank\"> {1} </a>",
@ -841,6 +841,7 @@
"BlazoriseSupportExplanation2": "Verify your email address by checking your email box. Check your spam box if you don't see an email in your inbox!",
"BlazoriseSupportExplanation3": "Log into the Blazorise support website at <a href=\"https://blazorise.com/support/login\">blazorise.com/support/login</a>.",
"BlazoriseSupportExplanation4": "If you have an active ABP Commercial license, you will also have a Blazorise PRO license. You can get your Blazorise license key at <a href=\"https://blazorise.com/support/user/manage/license\">blazorise.com/support/user/manage/license</a>.",
"BlazoriseSupportExplanation5": "You can post your questions on the support website and generate a product token for your application."
"BlazoriseSupportExplanation5": "You can post your questions on the support website and generate a product token for your application.",
"AbpLiveTrainingPackages": "ABP Live Training Packages"
}
}

5
abp_io/AbpIoLocalization/AbpIoLocalization/Community/Localization/Resources/en.json

@ -181,13 +181,14 @@
"Post_Create_Page_CreateNewPost": "Create New Post",
"Post_Index_Page_MetaDescription": "ABP Community's purpose is to create a contribution environment for developers who use the ABP framework.",
"Layout_Title": "{0} | ABP Community",
"Layout_MetaDescription": "ABP Community is an environment where people can share posts about ABP framework and follows the projects.",
"Layout_MetaDescription": "A hub for ABP Framework, .NET, and software development. Access articles, tutorials, news, and contribute to the ABP community.",
"Index_Page_CommunityIntroduction": "This is a hub for ABP Framework, .NET and software development. You can read the articles, watch the video tutorials, get informed about ABP’s development progress and ABP-related events, help other developers and share your expertise with the ABP community.",
"TagsInArticle": "Tags in article",
"IConsentToMedium": "I consent to the publication of this post at https://medium.com/volosoft.",
"SearchResultsFor": "Search results for <span class=\"fw-bold\">\"{0}\"</span>",
"SeeMoreVideos": "See more videos",
"DiscordPageTitle": "ABP Discord Community",
"ViewVideo": "View Video"
"ViewVideo": "View Video",
"AbpCommunityTitleContent": "ABP Community - Open Source ABP Framework"
}
}

4
configureawait.props

@ -1,9 +1,9 @@
<Project>
<ItemGroup>
<ItemGroup Condition="'$(Configuration)' == 'Release'">
<PackageReference Include="ConfigureAwait.Fody" Version="3.3.1" PrivateAssets="All" />
<PackageReference Include="Fody" Version="6.6.1">
<PrivateAssets>All</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
</Project>
</Project>

2
docs/en/CLI.md

@ -48,6 +48,7 @@ Here, is the list of all available commands before explaining their details:
* **`logout`**: Logouts from your computer if you've authenticated before.
* **`bundle`**: Generates script and style references for ABP Blazor and MAUI Blazor project.
* **`install-libs`**: Install NPM Packages for MVC / Razor Pages and Blazor Server UI types.
* **`clear-download-cache`** Clears the templates download cache.
### help
@ -165,6 +166,7 @@ For more samples, go to [ABP CLI Create Solution Samples](CLI-New-Command-Sample
* `--local-framework-ref --abp-path`: Uses local projects references to the ABP framework instead of using the NuGet packages. This can be useful if you download the ABP Framework source code and have a local reference to the framework from your application.
* `--no-random-port`: Uses template's default ports.
* `--skip-installing-libs` or `-sib`: Skip installing client side packages.
* `--skip-cache` or `-sc`: Always download the latest from our server and refresh their templates folder cache.
* `--with-public-website`: **Public Website** is a front-facing website for describing your project, listing your products and doing SEO for marketing purposes. Users can login and register on your website with this website.
See some [examples for the new command](CLI-New-Command-Samples.md) here.

33
docs/en/KB/Windows-Path-Too-Long-Fix.md

@ -1,10 +1,39 @@
# How to Fix "Filename too long" Error on Windows
If you encounter the "filename too long" or "unzip" error on Windows, it's probably related to the Windows maximum file path limitation. Windows has a maximum file path limitation of 250 characters. To solve this, [enable the long path option in Windows 10](https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later).
If you encounter the "filename too long" or "unzip" error on Windows, it's probably related to the Windows maximum file path limitation. Windows has a maximum file path limitation of 255 characters.
## Solution 1
Try [enabling the long path option in Windows 10](https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd#enable-long-paths-in-windows-10-version-1607-and-later).
If you face long path errors related to Git, try the following command to enable long paths in Windows.
```
git config --system core.longpaths true
```
See https://github.com/msysgit/msysgit/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path
See https://github.com/msysgit/msysgit/wiki/Git-cannot-create-a-file-or-directory-with-a-long-path
## Solution 2
You may encounter a "DirectoryNotFoundException - Could not find a part of the path" exception in Windows while using certain .NET MAUI build tools. This is related to some 32 bit .NET MAUI build tools. To resolve this issue, you can try placing the solution in the root directory of your drive, such as `C:\Projects\`. However, please note that this solution is specific to this particular exception and may not be applicable to all cases of the Windows long path issue.
## Solution 3
You can define an alias for a path in Windows by creating a symbolic link using the `mklink` command in the command prompt. Here's an example:
```
mklink /D C:\MyProject C:\my\long\path\to\solution\
```
> Your **solution (.sln)** file should be in `C:\my\long\path\to\solution\`. Keep in mind that, if you have relative paths in your .csproj file, it will not work!
This command creates a symbolic link named `MyProject` in the root of the `C:` drive that points to the `C:\my\long\path\to\solution\` directory. You can then use `C:\MyProject` to access the contents of the `C:\my\long\path\to\solution\` directory.
> Note that you need to run the command prompt as an administrator to the create symbolic links.
Then you can try building your project with `dotnet build` command.
```
dotnet build C:\MyProject\MyProjectName.sln
```

13
docs/en/Startup-Templates/Application.md

@ -261,6 +261,19 @@ You should run the application with the given order:
* Then run the `.HttpApi.Host` since it is used by the `.Web` application.
* Finally, you can run the `.Web` project and login to the application (using `admin` as the username and `1q2w3E*` as the password).
### Blazor UI
If you choose `Blazor` as the UI Framework (using the `-u blazor` or `-u blazor-server` option), the solution will have a project named `.Blazor`. This project contains the Blazor UI application. According to your choice, it will be a Blazor WebAssembly or Blazor Server application. If Blazor WebAssembly is selected, the solution will also have a `.HttpApi.Host`. This project is an ASP.NET Core application that hosts the backend application for the Blazor single page application.
#### .Blazor Project (Server)
The Blazor Server project is similar to the ASP.NET Core MVC project. It replaces `.Web` project with `.Blazor` in the solution structure above. It has the same folder structure and the same application flow. Since it's an ASP.NET Core application, it can contain **.cshtml** files and **.razor** components at the same time. If routing matches a razor component, the Blazor UI will be used. Otherwise, the request will be handled by the MVC framework.
![abp solution structure blazor server](../images/layered-project-dependencies-blazor-server.png)
#### .Blazor Project (WebAssembly)
The Blazor WebAssembly project is a single page application that runs on the browser. You'll see it as `.Blazor` project in the solution. It uses the `.HttpApi.Host` project to communicate with the backend. It can't be used without the backend application. It contains only **.razor** components. It's a pure client-side application. It doesn't have any server-side code. Everything in this layer will be for the client side.
![abp solution structure blazor wasm](../images/layered-project-dependencies-blazor-wasm.png)
### Angular UI
If you choose `Angular` as the UI framework (using the `-u angular` option), the solution is being separated into two folders:

4
docs/en/UI/AspNetCore/Tag-Helpers/Dropdowns.md

@ -70,8 +70,8 @@ Basic usage:
A value indicates which direction `abp-dropdown-menu` items will be aligned to. Should be one of the following values:
* `Left` (default value)
* `Right`
* `Start` (default value)
* `End`
### Additional content

4
docs/en/docs-nav.json

@ -1351,6 +1351,10 @@
"text": "Deployment",
"path": "Deployment/Index.md",
"items": [
{
"text": "Configuring OpenIddict",
"path": "Deployment/Configuring-OpenIddict.md"
},
{
"text": "Configuring for Production",
"path": "Deployment/Configuring-Production.md"

BIN
docs/en/images/layered-project-dependencies-blazor-server.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

BIN
docs/en/images/layered-project-dependencies-blazor-wasm.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

2
docs/zh-Hans/CLI.md

@ -44,6 +44,7 @@ dotnet tool update -g Volo.Abp.Cli
* **`logout`**: 在你的计算机注销认证.
* **`bundle`**: 为 ABP Blazor 和 MAUI Blazor 项目生成引用的脚本和样式.
* **`install-libs`**: 为 MVC / Razor Pages 和 Blazor Server UI 类型安装NPM包.
* **`clear-download-cache`** 删除下载的模版缓存.
### help
@ -142,6 +143,7 @@ abp new Acme.BookStore
* `--create-solution-folder` 或者 `-csf`: 指定项目是在输出文件夹中的新文件夹中还是直接在输出文件夹中.
* `--connection-string` 或者 `-cs`: 重写所有 `appsettings.json` 文件的默认连接字符串. 默认连接字符串是 `Server=localhost;Database=MyProjectName;Trusted_Connection=True`. 默认的数据库提供程序是 `SQL Server`. 如果你使用EF Core但需要更改DBMS,可以按[这里所述](Entity-Framework-Core-Other-DBMS.md)进行更改(创建解决方案之后).
* `--local-framework-ref --abp-path`: 使用对项目的本地引用,而不是替换为NuGet包引用.
* `--skip-cache` or `-sc`: 从服务器下载最新的模版并更新本地模版缓存.
### update

1
framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/Extensibility/WebAssemblyLookupApiRequestService.cs

@ -3,7 +3,6 @@ using System.Globalization;
using System.Net.Http;
using System.Threading.Tasks;
using Castle.Components.DictionaryAdapter;
using Fody;
using Volo.Abp.AspNetCore.Components.Web.Extensibility;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client.Authentication;

39
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerBaseTagHelperService.cs

@ -22,11 +22,42 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form.DatePicker;
public abstract class AbpDatePickerBaseTagHelperService<TTagHelper> : AbpTagHelperService<TTagHelper>
where TTagHelper : AbpDatePickerBaseTagHelper<TTagHelper>
{
protected readonly Dictionary<Type,Func<object,string>> SupportedInputTypes = new() {
{typeof(string), o => DateTime.Parse((string)o).ToString("O")},
{typeof(DateTime), o => ((DateTime) o).ToString("O")},
protected readonly Dictionary<Type, Func<object, string>> SupportedInputTypes = new()
{
{
typeof(string), o =>
{
if(o is string s && DateTime.TryParse(s, out var dt))
{
return dt.ToString("O");
}
return string.Empty;
}
},
{
typeof(DateTime), o =>
{
if(o is DateTime dt && dt != default)
{
return dt.ToString("O");
}
return string.Empty;
}
},
{typeof(DateTime?), o => ((DateTime?) o)?.ToString("O")},
{typeof(DateTimeOffset), o => ((DateTimeOffset) o).ToString("O")},
{
typeof(DateTimeOffset), o =>
{
if(o is DateTimeOffset dto && dto != default)
{
return dto.ToString("O");
}
return string.Empty;
}
},
{typeof(DateTimeOffset?), o => ((DateTimeOffset?) o)?.ToString("O")}
};

9
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/DatePicker/AbpDatePickerTagHelperService.cs

@ -63,11 +63,14 @@ public class AbpDatePickerTagHelperService : AbpDatePickerBaseTagHelperService<A
protected override void AddBaseTagAttributes(TagHelperAttributeList attributes)
{
if (TagHelper.AspFor != null &&
TagHelper.AspFor.Model != null &&
if (TagHelper.AspFor?.Model != null &&
SupportedInputTypes.TryGetValue(TagHelper.AspFor.Metadata.ModelType, out var convertFunc))
{
attributes.Add("data-date", convertFunc(TagHelper.AspFor.Model));
var convert = convertFunc(TagHelper.AspFor.Model);
if(!convert.IsNullOrWhiteSpace())
{
attributes.Add("data-date", convert);
}
}
}

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/bootstrap/dom-event-handlers.js

@ -619,9 +619,7 @@
options.separator = separator;
}
if(options.autoUpdateInput){
fillInput($input, startDate, endDate, options);
}
fillInput($input, startDate, endDate, options);
$input.on('apply.daterangepicker', function (ev, picker) {
if (singleDatePicker) {

21
framework/src/Volo.Abp.BlazoriseUI/Components/AbpExtensibleDataGrid.razor

@ -72,11 +72,22 @@
{
@if (column.Component != null)
{
<DataGridColumn TItem="TItem" Field="@typeof(TItem).GetProperties().First().Name" Caption="@column.Title">
<DisplayTemplate>
@RenderCustomTableColumnComponent(column.Component, context)
</DisplayTemplate>
</DataGridColumn>
@if (column.ValueConverter == null)
{
<DataGridColumn TItem="TItem" Field="@column.Data" Caption="@column.Title" Sortable="@column.Sortable" DisplayFormat="@column.DisplayFormat" DisplayFormatProvider="@column.DisplayFormatProvider" >
<DisplayTemplate>
@RenderCustomTableColumnComponent(column.Component, context)
</DisplayTemplate>
</DataGridColumn>
}
else
{
<DataGridColumn TItem="TItem" Field="@column.Data" Caption="@column.Title" Sortable="@column.Sortable">
<DisplayTemplate>
@RenderCustomTableColumnComponent(column.Component, context)
</DisplayTemplate>
</DataGridColumn>
}
}
else
{

3
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/AbpCliCoreModule.cs

@ -64,7 +64,8 @@ public class AbpCliCoreModule : AbpModule
options.Commands[InstallLibsCommand.Name] = typeof(InstallLibsCommand);
options.Commands[CleanCommand.Name] = typeof(CleanCommand);
options.Commands[CliCommand.Name] = typeof(CliCommand);
options.Commands[ClearDownloadCacheCommand.Name] = typeof(ClearDownloadCacheCommand);
options.DisabledModulesToAddToSolution.Add("Volo.Abp.LeptonXTheme.Pro");
options.DisabledModulesToAddToSolution.Add("Volo.Abp.LeptonXTheme.Lite");
});

59
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ClearDownloadCacheCommand.cs

@ -0,0 +1,59 @@
using System;
using System.IO;
using System.Text;
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.Commands;
public class ClearDownloadCacheCommand : IConsoleCommand, ITransientDependency
{
public const string Name = "clear-download-cache";
public ILogger<ClearDownloadCacheCommand> Logger { get; set; }
public ClearDownloadCacheCommand()
{
Logger = NullLogger<ClearDownloadCacheCommand>.Instance;
}
public async Task ExecuteAsync(CommandLineArgs commandLineArgs)
{
Logger.LogInformation("Clearing the templates download cache...");
foreach (var cacheFile in Directory.GetFiles(CliPaths.TemplateCache, "*.zip"))
{
Logger.LogInformation($"Deleting {cacheFile}");
try
{
File.Delete(cacheFile);
}
catch (Exception e)
{
Logger.LogError(e, $"Could not delete {cacheFile}");
}
}
Logger.LogInformation("Done.");
await Task.CompletedTask;
}
public string GetUsageInfo()
{
var sb = new StringBuilder();
sb.AppendLine("");
sb.AppendLine("Usage:");
sb.AppendLine(" abp clear-download-cache");
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 "Clears the templates download cache.";
}
}

37
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/NewCommand.cs

@ -24,40 +24,40 @@ namespace Volo.Abp.Cli.Commands;
public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransientDependency
{
public const string Name = "new";
protected TemplateProjectBuilder TemplateProjectBuilder { get; }
public ITemplateInfoProvider TemplateInfoProvider { get; }
public NewCommand(
ConnectionStringProvider connectionStringProvider,
ConnectionStringProvider connectionStringProvider,
SolutionPackageVersionFinder solutionPackageVersionFinder,
ICmdHelper cmdHelper,
IInstallLibsService installLibsService,
IInstallLibsService installLibsService,
CliService cliService,
AngularPwaSupportAdder angularPwaSupportAdder,
AngularPwaSupportAdder angularPwaSupportAdder,
InitialMigrationCreator initialMigrationCreator,
ThemePackageAdder themePackageAdder,
ILocalEventBus eventBus,
ThemePackageAdder themePackageAdder,
ILocalEventBus eventBus,
IBundlingService bundlingService,
ITemplateInfoProvider templateInfoProvider,
ITemplateInfoProvider templateInfoProvider,
TemplateProjectBuilder templateProjectBuilder,
AngularThemeConfigurer angularThemeConfigurer) :
base(connectionStringProvider,
solutionPackageVersionFinder,
cmdHelper,
installLibsService,
cliService,
solutionPackageVersionFinder,
cmdHelper,
installLibsService,
cliService,
angularPwaSupportAdder,
initialMigrationCreator,
themePackageAdder,
eventBus,
themePackageAdder,
eventBus,
bundlingService,
angularThemeConfigurer)
{
TemplateInfoProvider = templateInfoProvider;
TemplateProjectBuilder = templateProjectBuilder;
}
public async Task ExecuteAsync(CommandLineArgs commandLineArgs)
{
var projectName = NamespaceHelper.NormalizeNamespace(commandLineArgs.Target);
@ -100,20 +100,20 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien
ConfigureNpmPackagesForTheme(projectArgs);
await RunGraphBuildForMicroserviceServiceTemplate(projectArgs);
await CreateInitialMigrationsAsync(projectArgs);
var skipInstallLibs = commandLineArgs.Options.ContainsKey(Options.SkipInstallingLibs.Long) || commandLineArgs.Options.ContainsKey(Options.SkipInstallingLibs.Short);
if (!skipInstallLibs)
{
await RunInstallLibsForWebTemplateAsync(projectArgs);
ConfigureAngularJsonForThemeSelection(projectArgs);
}
var skipBundling = commandLineArgs.Options.ContainsKey(Options.SkipBundling.Long) || commandLineArgs.Options.ContainsKey(Options.SkipBundling.Short);
if (!skipBundling)
{
await RunBundleForBlazorWasmOrMauiBlazorTemplateAsync(projectArgs);
}
await ConfigurePwaSupportForAngular(projectArgs);
OpenRelatedWebPage(projectArgs, template, isTiered, commandLineArgs);
@ -149,6 +149,7 @@ public class NewCommand : ProjectCreationCommandBase, IConsoleCommand, ITransien
sb.AppendLine("--local-framework-ref --abp-path <your-local-abp-repo-path> (keeps local references to projects instead of replacing with NuGet package references)");
sb.AppendLine("-sib|--skip-installing-libs (Doesn't run `abp install-libs` command after project creation)");
sb.AppendLine("-sb|--skip-bundling (Doesn't run `abp bundle` command after Blazor Wasm project creation)");
sb.AppendLine("-sc|--skip-cache (Always download the latest from our server and refresh their templates folder cache)");
sb.AppendLine("");
sb.AppendLine("Examples:");
sb.AppendLine("");

38
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/ProjectCreationCommandBase.cs

@ -39,7 +39,7 @@ public abstract class ProjectCreationCommandBase
public ILogger<NewCommand> Logger { get; set; }
public ThemePackageAdder ThemePackageAdder { get; }
public AngularThemeConfigurer AngularThemeConfigurer { get; }
public ProjectCreationCommandBase(
@ -52,7 +52,7 @@ public abstract class ProjectCreationCommandBase
InitialMigrationCreator initialMigrationCreator,
ThemePackageAdder themePackageAdder,
ILocalEventBus eventBus,
IBundlingService bundlingService,
IBundlingService bundlingService,
AngularThemeConfigurer angularThemeConfigurer)
{
_bundlingService = bundlingService;
@ -221,10 +221,12 @@ public abstract class ProjectCreationCommandBase
}
commandLineArgs.Options.Add(CliConsts.Command, commandLineArgs.Command);
var theme = uiFramework == UiFramework.None ? (Theme?)null : GetThemeByTemplateOrNull(commandLineArgs, template);
var themeStyle = theme.HasValue ? GetThemeStyleOrNull(commandLineArgs, theme.Value) : (ThemeStyle?)null;
var skipCache = commandLineArgs.Options.ContainsKey(Options.SkipCache.Long) || commandLineArgs.Options.ContainsKey(Options.SkipCache.Short);
return new ProjectBuildArgs(
solutionName,
template,
@ -242,7 +244,8 @@ public abstract class ProjectCreationCommandBase
connectionString,
pwa,
theme,
themeStyle
themeStyle,
skipCache
);
}
@ -417,7 +420,7 @@ public abstract class ProjectCreationCommandBase
protected async Task RunBundleForBlazorWasmOrMauiBlazorTemplateAsync(ProjectBuildArgs projectArgs)
{
if ((AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) || AppNoLayersTemplateBase.IsAppNoLayersTemplate(projectArgs.TemplateName))
if ((AppTemplateBase.IsAppTemplate(projectArgs.TemplateName) || AppNoLayersTemplateBase.IsAppNoLayersTemplate(projectArgs.TemplateName))
&& projectArgs.UiFramework is UiFramework.Blazor or UiFramework.MauiBlazor)
{
var isWebassembly = projectArgs.UiFramework == UiFramework.Blazor;
@ -432,7 +435,7 @@ public abstract class ProjectCreationCommandBase
var directory = Path.GetDirectoryName(
Directory.GetFiles(projectArgs.OutputFolder, isWebassembly? "*.Blazor.csproj" :"*.MauiBlazor.csproj", SearchOption.AllDirectories).First()
);
await _bundlingService.BundleAsync(directory, true, projectType: isWebassembly ? BundlingConsts.WebAssembly : BundlingConsts.MauiBlazor);
}
}
@ -584,10 +587,10 @@ public abstract class ProjectCreationCommandBase
{
// null or "leptonx-lite" => Theme.LeptonXLite,
"basic" => Theme.Basic,
_ => Theme.LeptonXLite
_ => Theme.LeptonXLite
};
}
Theme GetAppProTheme()
{
return theme switch
@ -600,16 +603,16 @@ public abstract class ProjectCreationCommandBase
}
}
protected virtual ThemeStyle? GetThemeStyleOrNull(CommandLineArgs commandLineArgs, Theme theme)
protected virtual ThemeStyle? GetThemeStyleOrNull(CommandLineArgs commandLineArgs, Theme theme)
{
if(theme != Theme.LeptonX)
if(theme != Theme.LeptonX)
{
return null;
}
var themeStyle = commandLineArgs.Options.GetOrNull(Options.ThemeStyle.Long)?.ToLower();
return themeStyle switch
return themeStyle switch
{
"system" or null => ThemeStyle.System,
"dim" => ThemeStyle.Dim,
@ -660,7 +663,7 @@ public abstract class ProjectCreationCommandBase
ThemePackageAdder.AddAngularPackage(projectArgs.OutputFolder, "@abp/ng.theme.basic", projectArgs.Version);
}
}
private void ConfigureNpmPackagesForLeptonTheme(ProjectBuildArgs projectArgs)
{
if (projectArgs.UiFramework is not UiFramework.None or UiFramework.Angular)
@ -686,7 +689,7 @@ public abstract class ProjectCreationCommandBase
{
return;
}
if (projectArgs.Theme.HasValue && projectArgs.UiFramework == UiFramework.Angular)
{
var angularFolderPath = projectArgs.TemplateName == MicroserviceProTemplate.TemplateName
@ -790,6 +793,13 @@ public abstract class ProjectCreationCommandBase
public const string Long = "skip-bundling";
}
public static class SkipCache
{
public const string Short = "sc";
public const string Long = "skip-cache";
}
public static class Tiered
{
public const string Long = "tiered";

12
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/AbpIoSourceCodeStore.cs

@ -59,7 +59,8 @@ public class AbpIoSourceCodeStore : ISourceCodeStore, ITransientDependency
string type,
string version = null,
string templateSource = null,
bool includePreReleases = false)
bool includePreReleases = false,
bool skipCache = false)
{
DirectoryHelper.CreateIfNotExists(CliPaths.TemplateCache);
var latestVersion = version ?? await GetLatestSourceCodeVersionAsync(name, type, null, includePreReleases);
@ -111,7 +112,7 @@ public class AbpIoSourceCodeStore : ISourceCodeStore, ITransientDependency
}
#endif
if (Options.CacheTemplates && File.Exists(localCacheFile) && templateSource.IsNullOrWhiteSpace())
if (Options.CacheTemplates && !skipCache && File.Exists(localCacheFile) && templateSource.IsNullOrWhiteSpace())
{
Logger.LogInformation("Using cached " + type + ": " + name + ", version: " + version);
return new TemplateFile(File.ReadAllBytes(localCacheFile), version, latestVersion, nugetVersion);
@ -132,6 +133,7 @@ public class AbpIoSourceCodeStore : ISourceCodeStore, ITransientDependency
if (Options.CacheTemplates && templateSource.IsNullOrWhiteSpace())
{
File.Delete(localCacheFile);
File.WriteAllBytes(localCacheFile, fileContent);
}
@ -218,7 +220,7 @@ public class AbpIoSourceCodeStore : ISourceCodeStore, ITransientDependency
var result = await response.Content.ReadAsStringAsync();
var versions = JsonSerializer.Deserialize<GithubReleaseVersions>(result);
return templateName.Contains("LeptonX") ?
return templateName.Contains("LeptonX") ?
versions.LeptonXVersions.Any(v => v.Name == version) :
versions.FrameworkAndCommercialVersions.Any(v => v.Name == version);
}
@ -335,7 +337,7 @@ public class AbpIoSourceCodeStore : ISourceCodeStore, ITransientDependency
public class GithubReleaseVersions
{
public List<GithubRelease> FrameworkAndCommercialVersions { get; set; }
public List<GithubRelease> LeptonXVersions { get; set; }
}
}
}

3
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ISourceCodeStore.cs

@ -10,6 +10,7 @@ public interface ISourceCodeStore
string type,
[CanBeNull] string version = null,
[CanBeNull] string templateSource = null,
bool includePreReleases = false
bool includePreReleases = false,
bool skipCache = false
);
}

6
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/ProjectBuildArgs.cs

@ -46,6 +46,8 @@ public class ProjectBuildArgs
public ThemeStyle? ThemeStyle { get; set; }
public bool SkipCache { get; set; }
[NotNull]
public Dictionary<string, string> ExtraProperties { get; set; }
@ -66,7 +68,8 @@ public class ProjectBuildArgs
[CanBeNull] string connectionString = null,
bool pwa = false,
Theme? theme = null,
ThemeStyle? themeStyle = null)
ThemeStyle? themeStyle = null,
bool skipCache = false)
{
SolutionName = Check.NotNull(solutionName, nameof(solutionName));
TemplateName = templateName;
@ -85,5 +88,6 @@ public class ProjectBuildArgs
Pwa = pwa;
Theme = theme;
ThemeStyle = themeStyle;
SkipCache = skipCache;
}
}

76
framework/src/Volo.Abp.Core/Volo/Abp/Threading/SemaphoreSlimExtensions.cs

@ -6,40 +6,56 @@ namespace Volo.Abp.Threading;
public static class SemaphoreSlimExtensions
{
public static async Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim)
public async static Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim)
{
await semaphoreSlim.WaitAsync();
return GetDispose(semaphoreSlim);
}
public static async Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, CancellationToken cancellationToken)
public async static Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, CancellationToken cancellationToken)
{
await semaphoreSlim.WaitAsync(cancellationToken);
return GetDispose(semaphoreSlim);
}
public static async Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, int millisecondsTimeout)
public async static Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, int millisecondsTimeout)
{
await semaphoreSlim.WaitAsync(millisecondsTimeout);
return GetDispose(semaphoreSlim);
if (await semaphoreSlim.WaitAsync(millisecondsTimeout))
{
return GetDispose(semaphoreSlim);
}
throw new TimeoutException();
}
public static async Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, int millisecondsTimeout, CancellationToken cancellationToken)
public async static Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, int millisecondsTimeout, CancellationToken cancellationToken)
{
await semaphoreSlim.WaitAsync(millisecondsTimeout, cancellationToken);
return GetDispose(semaphoreSlim);
if (await semaphoreSlim.WaitAsync(millisecondsTimeout, cancellationToken))
{
return GetDispose(semaphoreSlim);
}
throw new TimeoutException();
}
public static async Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, TimeSpan timeout)
public async static Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, TimeSpan timeout)
{
await semaphoreSlim.WaitAsync(timeout);
return GetDispose(semaphoreSlim);
if (await semaphoreSlim.WaitAsync(timeout))
{
return GetDispose(semaphoreSlim);
}
throw new TimeoutException();
}
public static async Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, TimeSpan timeout, CancellationToken cancellationToken)
public async static Task<IDisposable> LockAsync(this SemaphoreSlim semaphoreSlim, TimeSpan timeout, CancellationToken cancellationToken)
{
await semaphoreSlim.WaitAsync(timeout, cancellationToken);
return GetDispose(semaphoreSlim);
if (await semaphoreSlim.WaitAsync(timeout, cancellationToken))
{
return GetDispose(semaphoreSlim);
}
throw new TimeoutException();
}
public static IDisposable Lock(this SemaphoreSlim semaphoreSlim)
@ -56,26 +72,42 @@ public static class SemaphoreSlimExtensions
public static IDisposable Lock(this SemaphoreSlim semaphoreSlim, int millisecondsTimeout)
{
semaphoreSlim.Wait(millisecondsTimeout);
return GetDispose(semaphoreSlim);
if (semaphoreSlim.Wait(millisecondsTimeout))
{
return GetDispose(semaphoreSlim);
}
throw new TimeoutException();
}
public static IDisposable Lock(this SemaphoreSlim semaphoreSlim, int millisecondsTimeout, CancellationToken cancellationToken)
{
semaphoreSlim.Wait(millisecondsTimeout, cancellationToken);
return GetDispose(semaphoreSlim);
if (semaphoreSlim.Wait(millisecondsTimeout, cancellationToken))
{
return GetDispose(semaphoreSlim);
}
throw new TimeoutException();
}
public static IDisposable Lock(this SemaphoreSlim semaphoreSlim, TimeSpan timeout)
{
semaphoreSlim.Wait(timeout);
return GetDispose(semaphoreSlim);
if (semaphoreSlim.Wait(timeout))
{
return GetDispose(semaphoreSlim);
}
throw new TimeoutException();
}
public static IDisposable Lock(this SemaphoreSlim semaphoreSlim, TimeSpan timeout, CancellationToken cancellationToken)
{
semaphoreSlim.Wait(timeout, cancellationToken);
return GetDispose(semaphoreSlim);
if (semaphoreSlim.Wait(timeout, cancellationToken))
{
return GetDispose(semaphoreSlim);
}
throw new TimeoutException();
}
private static IDisposable GetDispose(this SemaphoreSlim semaphoreSlim)

6
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Uow/EntityFrameworkCore/EfCoreTransactionApi.cs

@ -28,7 +28,7 @@ public class EfCoreTransactionApi : ITransactionApi, ISupportsRollback
AttendedDbContexts = new List<IEfCoreDbContext>();
}
public async Task CommitAsync()
public async Task CommitAsync(CancellationToken cancellationToken = default)
{
foreach (var dbContext in AttendedDbContexts)
{
@ -38,10 +38,10 @@ public class EfCoreTransactionApi : ITransactionApi, ISupportsRollback
continue; //Relational databases use the shared transaction if they are using the same connection
}
await dbContext.Database.CommitTransactionAsync(CancellationTokenProvider.Token);
await dbContext.Database.CommitTransactionAsync(CancellationTokenProvider.FallbackToProvider(cancellationToken));
}
await DbContextTransaction.CommitAsync(CancellationTokenProvider.Token);
await DbContextTransaction.CommitAsync(CancellationTokenProvider.FallbackToProvider(cancellationToken));
}
public void Dispose()

4
framework/src/Volo.Abp.MongoDB/Volo/Abp/Uow/MongoDB/MongoDbTransactionApi.cs

@ -19,9 +19,9 @@ public class MongoDbTransactionApi : ITransactionApi, ISupportsRollback
CancellationTokenProvider = cancellationTokenProvider;
}
public async Task CommitAsync()
public async Task CommitAsync(CancellationToken cancellationToken)
{
await SessionHandle.CommitTransactionAsync(CancellationTokenProvider.Token);
await SessionHandle.CommitTransactionAsync(CancellationTokenProvider.FallbackToProvider(cancellationToken));
}
public void Dispose()

2
framework/src/Volo.Abp.Uow/Volo/Abp/Uow/ISupportsRollback.cs

@ -5,5 +5,5 @@ namespace Volo.Abp.Uow;
public interface ISupportsRollback
{
Task RollbackAsync(CancellationToken cancellationToken);
Task RollbackAsync(CancellationToken cancellationToken = default);
}

3
framework/src/Volo.Abp.Uow/Volo/Abp/Uow/ITransactionApi.cs

@ -1,9 +1,10 @@
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Volo.Abp.Uow;
public interface ITransactionApi : IDisposable
{
Task CommitAsync();
Task CommitAsync(CancellationToken cancellationToken = default);
}

6
framework/src/Volo.Abp.Uow/Volo/Abp/Uow/UnitOfWork.cs

@ -158,7 +158,7 @@ public class UnitOfWork : IUnitOfWork, ITransientDependency
await SaveChangesAsync(cancellationToken);
}
await CommitTransactionsAsync();
await CommitTransactionsAsync(cancellationToken);
IsCompleted = true;
await OnCompletedAsync();
}
@ -363,11 +363,11 @@ public class UnitOfWork : IUnitOfWork, ITransientDependency
}
}
protected virtual async Task CommitTransactionsAsync()
protected virtual async Task CommitTransactionsAsync(CancellationToken cancellationToken)
{
foreach (var transaction in GetAllActiveTransactionApis())
{
await transaction.CommitAsync();
await transaction.CommitAsync(cancellationToken);
}
}

28
framework/test/Volo.Abp.Core.Tests/Volo/Abp/Threading/SemaphoreSlimExtensions_Tests.cs

@ -0,0 +1,28 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Shouldly;
using Xunit;
namespace Volo.Abp.Threading;
public class SemaphoreSlimExtensions_Tests
{
[Fact]
public async Task LockAsync_Test()
{
var semaphore = new SemaphoreSlim(0, 1);
await Assert.ThrowsAsync<TimeoutException>(async () =>
{
await semaphore.LockAsync(10);
});
semaphore = new SemaphoreSlim(1, 1);
using (await semaphore.LockAsync())
{
semaphore.CurrentCount.ShouldBe(0);
}
semaphore.CurrentCount.ShouldBe(1);
}
}

29
framework/test/Volo.Abp.EntityFrameworkCore.Tests/Volo/Abp/EntityFrameworkCore/Uow/UnitOfWork_CancellationToken_Tests.cs

@ -0,0 +1,29 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.TestApp.Domain;
using Volo.Abp.Uow;
using Xunit;
namespace Volo.Abp.EntityFrameworkCore.Uow;
public class UnitOfWork_CancellationToken_Tests : EntityFrameworkCoreTestBase
{
[Fact]
public async Task Should_Cancel_Test()
{
using (var uow = GetRequiredService<IUnitOfWorkManager>().Begin(isTransactional: true))
{
await Assert.ThrowsAsync<TaskCanceledException>(async () =>
{
var cst = new CancellationTokenSource();
cst.Cancel();
await GetRequiredService<IBasicRepository<Person, Guid>>().InsertAsync(new Person(Guid.NewGuid(), "Adam", 42));
await uow.CompleteAsync(cst.Token);
});
}
}
}

31
framework/test/Volo.Abp.MongoDB.Tests/Volo/Abp/MongoDB/Uow/UnitOfWork_CancellationToken_Tests.cs

@ -0,0 +1,31 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.TestApp.Domain;
using Volo.Abp.TestApp.Testing;
using Volo.Abp.Uow;
using Xunit;
namespace Volo.Abp.MongoDB.Uow;
[Collection(MongoTestCollection.Name)]
public class UnitOfWork_CancellationToken_Tests : TestAppTestBase<AbpMongoDbTestModule>
{
[Fact]
public async Task Should_Cancel_Test()
{
using (var uow = GetRequiredService<IUnitOfWorkManager>().Begin(isTransactional: true))
{
await Assert.ThrowsAsync<OperationCanceledException>(async () =>
{
var cst = new CancellationTokenSource();
cst.Cancel();
await GetRequiredService<IBasicRepository<Person, Guid>>().InsertAsync(new Person(Guid.NewGuid(), "Adam", 42));
await uow.CompleteAsync(cst.Token);
});
}
}
}

2
latest-versions.json

@ -1,6 +1,6 @@
[
{
"version": "7.2.1",
"version": "7.2.2",
"releaseDate": "",
"type": "stable",
"message": ""

2
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/package.json

@ -3,7 +3,7 @@
"name": "asp.net",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.1",
"@abp/aspnetcore.mvc.ui.theme.shared": "~7.2.2",
"highlight.js": "^9.13.1"
},
"devDependencies": {}

244
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.Demo/yarn.lock

@ -2,32 +2,32 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738"
integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.1"
"@abp/bootstrap" "~7.2.1"
"@abp/bootstrap-datepicker" "~7.2.1"
"@abp/bootstrap-daterangepicker" "~7.2.1"
"@abp/datatables.net-bs5" "~7.2.1"
"@abp/font-awesome" "~7.2.1"
"@abp/jquery-form" "~7.2.1"
"@abp/jquery-validation-unobtrusive" "~7.2.1"
"@abp/lodash" "~7.2.1"
"@abp/luxon" "~7.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.1"
"@abp/moment" "~7.2.1"
"@abp/select2" "~7.2.1"
"@abp/sweetalert2" "~7.2.1"
"@abp/timeago" "~7.2.1"
"@abp/toastr" "~7.2.1"
"@abp/aspnetcore.mvc.ui@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe"
integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg==
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55"
integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.2"
"@abp/bootstrap" "~7.2.2"
"@abp/bootstrap-datepicker" "~7.2.2"
"@abp/bootstrap-daterangepicker" "~7.2.2"
"@abp/datatables.net-bs5" "~7.2.2"
"@abp/font-awesome" "~7.2.2"
"@abp/jquery-form" "~7.2.2"
"@abp/jquery-validation-unobtrusive" "~7.2.2"
"@abp/lodash" "~7.2.2"
"@abp/luxon" "~7.2.2"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.2"
"@abp/moment" "~7.2.2"
"@abp/select2" "~7.2.2"
"@abp/sweetalert2" "~7.2.2"
"@abp/timeago" "~7.2.2"
"@abp/toastr" "~7.2.2"
"@abp/aspnetcore.mvc.ui@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05"
integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -36,158 +36,158 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3"
integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw==
"@abp/bootstrap-datepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717"
integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap-daterangepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7"
integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA==
"@abp/bootstrap-daterangepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80"
integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw==
dependencies:
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318"
integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw==
"@abp/bootstrap@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793"
integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
bootstrap "^5.1.3"
"@abp/core@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898"
integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA==
"@abp/core@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67"
integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw==
dependencies:
"@abp/utils" "~7.2.1"
"@abp/utils" "~7.2.2"
"@abp/datatables.net-bs5@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed"
integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog==
"@abp/datatables.net-bs5@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd"
integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ==
dependencies:
"@abp/datatables.net" "~7.2.1"
"@abp/datatables.net" "~7.2.2"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41"
integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ==
"@abp/datatables.net@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0"
integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
datatables.net "^1.11.4"
"@abp/font-awesome@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5"
integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA==
"@abp/font-awesome@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97"
integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49"
integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ==
"@abp/jquery-form@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9"
integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9"
integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw==
"@abp/jquery-validation-unobtrusive@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534"
integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ==
dependencies:
"@abp/jquery-validation" "~7.2.1"
"@abp/jquery-validation" "~7.2.2"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb"
integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg==
"@abp/jquery-validation@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630"
integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-validation "^1.19.3"
"@abp/jquery@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f"
integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w==
"@abp/jquery@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf"
integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
jquery "~3.6.0"
"@abp/lodash@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b"
integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA==
"@abp/lodash@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d"
integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
lodash "^4.17.21"
"@abp/luxon@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516"
integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw==
"@abp/luxon@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060"
integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346"
integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g==
"@abp/malihu-custom-scrollbar-plugin@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7"
integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25"
integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g==
"@abp/moment@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d"
integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw==
dependencies:
moment "^2.9.0"
"@abp/select2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95"
integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw==
"@abp/select2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f"
integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
select2 "^4.0.13"
"@abp/sweetalert2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3"
integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ==
"@abp/sweetalert2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376"
integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
sweetalert2 "^11.3.6"
"@abp/timeago@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857"
integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw==
"@abp/timeago@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa"
integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
timeago "^1.6.7"
"@abp/toastr@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2"
integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ==
"@abp/toastr@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965"
integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
toastr "^2.1.4"
"@abp/utils@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5"
integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg==
"@abp/utils@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0"
integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg==
dependencies:
just-compare "^1.3.0"

4
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package.json

@ -3,8 +3,8 @@
"name": "asp.net",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1",
"@abp/prismjs": "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2",
"@abp/prismjs": "~7.2.2"
},
"devDependencies": {}
}

280
modules/basic-theme/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/yarn.lock

@ -2,39 +2,39 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8"
integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738"
integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.1"
"@abp/bootstrap" "~7.2.1"
"@abp/bootstrap-datepicker" "~7.2.1"
"@abp/bootstrap-daterangepicker" "~7.2.1"
"@abp/datatables.net-bs5" "~7.2.1"
"@abp/font-awesome" "~7.2.1"
"@abp/jquery-form" "~7.2.1"
"@abp/jquery-validation-unobtrusive" "~7.2.1"
"@abp/lodash" "~7.2.1"
"@abp/luxon" "~7.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.1"
"@abp/moment" "~7.2.1"
"@abp/select2" "~7.2.1"
"@abp/sweetalert2" "~7.2.1"
"@abp/timeago" "~7.2.1"
"@abp/toastr" "~7.2.1"
"@abp/aspnetcore.mvc.ui@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe"
integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg==
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a"
integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55"
integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.2"
"@abp/bootstrap" "~7.2.2"
"@abp/bootstrap-datepicker" "~7.2.2"
"@abp/bootstrap-daterangepicker" "~7.2.2"
"@abp/datatables.net-bs5" "~7.2.2"
"@abp/font-awesome" "~7.2.2"
"@abp/jquery-form" "~7.2.2"
"@abp/jquery-validation-unobtrusive" "~7.2.2"
"@abp/lodash" "~7.2.2"
"@abp/luxon" "~7.2.2"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.2"
"@abp/moment" "~7.2.2"
"@abp/select2" "~7.2.2"
"@abp/sweetalert2" "~7.2.2"
"@abp/timeago" "~7.2.2"
"@abp/toastr" "~7.2.2"
"@abp/aspnetcore.mvc.ui@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05"
integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -43,175 +43,175 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3"
integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw==
"@abp/bootstrap-datepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717"
integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap-daterangepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7"
integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA==
"@abp/bootstrap-daterangepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80"
integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw==
dependencies:
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318"
integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw==
"@abp/bootstrap@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793"
integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
bootstrap "^5.1.3"
"@abp/clipboard@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.1.tgz#dab262b84aa956eeb3a145461b662c5ae851b4a8"
integrity sha512-72C3QMEMMtXzjv6GTJJiILSJ1ScBidcKdahrRLlomo4TgCIEgg1+oYL3Q0uyrlB5I0mUqBaf+qYlxXue8JdRAQ==
"@abp/clipboard@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.2.tgz#e8130fc671b1c3dc85517a8f8bae1bb4c6fac64f"
integrity sha512-QiFMsawpo3e6ZV3OKe0F21vXHRv2X1WZoivQ4yYordM7QtLZG0bdftIGA1jPcKbWoSOc8wfFZszzXuceeI8U5w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
clipboard "^2.0.8"
"@abp/core@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898"
integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA==
"@abp/core@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67"
integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw==
dependencies:
"@abp/utils" "~7.2.1"
"@abp/utils" "~7.2.2"
"@abp/datatables.net-bs5@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed"
integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog==
"@abp/datatables.net-bs5@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd"
integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ==
dependencies:
"@abp/datatables.net" "~7.2.1"
"@abp/datatables.net" "~7.2.2"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41"
integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ==
"@abp/datatables.net@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0"
integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
datatables.net "^1.11.4"
"@abp/font-awesome@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5"
integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA==
"@abp/font-awesome@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97"
integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49"
integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ==
"@abp/jquery-form@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9"
integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9"
integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw==
"@abp/jquery-validation-unobtrusive@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534"
integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ==
dependencies:
"@abp/jquery-validation" "~7.2.1"
"@abp/jquery-validation" "~7.2.2"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb"
integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg==
"@abp/jquery-validation@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630"
integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-validation "^1.19.3"
"@abp/jquery@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f"
integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w==
"@abp/jquery@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf"
integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
jquery "~3.6.0"
"@abp/lodash@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b"
integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA==
"@abp/lodash@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d"
integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
lodash "^4.17.21"
"@abp/luxon@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516"
integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw==
"@abp/luxon@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060"
integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346"
integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g==
"@abp/malihu-custom-scrollbar-plugin@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7"
integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25"
integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g==
"@abp/moment@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d"
integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw==
dependencies:
moment "^2.9.0"
"@abp/prismjs@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.1.tgz#322ea0c1368df89a8649af2ecf9660ae9c3eb12a"
integrity sha512-918o/Gev6f5tm6U0cO6S7Teygzre1x+HpzGH5WJdNx14/ZQ6wNrcsIMIjd84R6noUPVt83/eZ27N+RQtvntQLg==
"@abp/prismjs@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.2.tgz#3b8d2fa48728f55c37917e901da9d453afce1a3e"
integrity sha512-qOjcdoZ2h5o/dJ3QCSxtT3XIB4nd1qjwKSgly1fEYlXBaf/iU1JdsAX+yvAw77UfCZ6NxpAmd/tREJP9FSrQeA==
dependencies:
"@abp/clipboard" "~7.2.1"
"@abp/core" "~7.2.1"
"@abp/clipboard" "~7.2.2"
"@abp/core" "~7.2.2"
prismjs "^1.26.0"
"@abp/select2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95"
integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw==
"@abp/select2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f"
integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
select2 "^4.0.13"
"@abp/sweetalert2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3"
integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ==
"@abp/sweetalert2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376"
integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
sweetalert2 "^11.3.6"
"@abp/timeago@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857"
integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw==
"@abp/timeago@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa"
integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
timeago "^1.6.7"
"@abp/toastr@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2"
integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ==
"@abp/toastr@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965"
integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
toastr "^2.1.4"
"@abp/utils@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5"
integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg==
"@abp/utils@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0"
integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg==
dependencies:
just-compare "^1.3.0"

4
modules/blogging/app/Volo.BloggingTestApp/package.json

@ -3,7 +3,7 @@
"name": "volo.blogtestapp",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1",
"@abp/blogging": "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2",
"@abp/blogging": "~7.2.2"
}
}

318
modules/blogging/app/Volo.BloggingTestApp/yarn.lock

@ -2,39 +2,39 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8"
integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738"
integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.1"
"@abp/bootstrap" "~7.2.1"
"@abp/bootstrap-datepicker" "~7.2.1"
"@abp/bootstrap-daterangepicker" "~7.2.1"
"@abp/datatables.net-bs5" "~7.2.1"
"@abp/font-awesome" "~7.2.1"
"@abp/jquery-form" "~7.2.1"
"@abp/jquery-validation-unobtrusive" "~7.2.1"
"@abp/lodash" "~7.2.1"
"@abp/luxon" "~7.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.1"
"@abp/moment" "~7.2.1"
"@abp/select2" "~7.2.1"
"@abp/sweetalert2" "~7.2.1"
"@abp/timeago" "~7.2.1"
"@abp/toastr" "~7.2.1"
"@abp/aspnetcore.mvc.ui@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe"
integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg==
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a"
integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55"
integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.2"
"@abp/bootstrap" "~7.2.2"
"@abp/bootstrap-datepicker" "~7.2.2"
"@abp/bootstrap-daterangepicker" "~7.2.2"
"@abp/datatables.net-bs5" "~7.2.2"
"@abp/font-awesome" "~7.2.2"
"@abp/jquery-form" "~7.2.2"
"@abp/jquery-validation-unobtrusive" "~7.2.2"
"@abp/lodash" "~7.2.2"
"@abp/luxon" "~7.2.2"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.2"
"@abp/moment" "~7.2.2"
"@abp/select2" "~7.2.2"
"@abp/sweetalert2" "~7.2.2"
"@abp/timeago" "~7.2.2"
"@abp/toastr" "~7.2.2"
"@abp/aspnetcore.mvc.ui@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05"
integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -43,201 +43,201 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/blogging@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-7.2.1.tgz#225d9a3314244c864a03e987e53e7797e04a0f27"
integrity sha512-sbtKkPau5VmLBA0iW9R6ICF2bxAD6nBm60qC9EGFdNa8KxGdWCwcxiWlxMAf3YQawYxE7UHXJpaIVJy3Si+qzA==
"@abp/blogging@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/blogging/-/blogging-7.2.2.tgz#d862220b56de1a6527e6b28f67001278d2ef90ec"
integrity sha512-50/iEC6B6Hy0W9lnC9bYW2RjUzB2VCMA/x/kVT9nOmdDaOdqwg/qc3NleNdHBkVoeH5BzhjXW6oAXc3+8TXEzA==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1"
"@abp/owl.carousel" "~7.2.1"
"@abp/prismjs" "~7.2.1"
"@abp/tui-editor" "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2"
"@abp/owl.carousel" "~7.2.2"
"@abp/prismjs" "~7.2.2"
"@abp/tui-editor" "~7.2.2"
"@abp/bootstrap-datepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3"
integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw==
"@abp/bootstrap-datepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717"
integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap-daterangepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7"
integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA==
"@abp/bootstrap-daterangepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80"
integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw==
dependencies:
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318"
integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw==
"@abp/bootstrap@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793"
integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
bootstrap "^5.1.3"
"@abp/clipboard@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.1.tgz#dab262b84aa956eeb3a145461b662c5ae851b4a8"
integrity sha512-72C3QMEMMtXzjv6GTJJiILSJ1ScBidcKdahrRLlomo4TgCIEgg1+oYL3Q0uyrlB5I0mUqBaf+qYlxXue8JdRAQ==
"@abp/clipboard@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.2.tgz#e8130fc671b1c3dc85517a8f8bae1bb4c6fac64f"
integrity sha512-QiFMsawpo3e6ZV3OKe0F21vXHRv2X1WZoivQ4yYordM7QtLZG0bdftIGA1jPcKbWoSOc8wfFZszzXuceeI8U5w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
clipboard "^2.0.8"
"@abp/core@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898"
integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA==
"@abp/core@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67"
integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw==
dependencies:
"@abp/utils" "~7.2.1"
"@abp/utils" "~7.2.2"
"@abp/datatables.net-bs5@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed"
integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog==
"@abp/datatables.net-bs5@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd"
integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ==
dependencies:
"@abp/datatables.net" "~7.2.1"
"@abp/datatables.net" "~7.2.2"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41"
integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ==
"@abp/datatables.net@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0"
integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
datatables.net "^1.11.4"
"@abp/font-awesome@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5"
integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA==
"@abp/font-awesome@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97"
integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49"
integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ==
"@abp/jquery-form@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9"
integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9"
integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw==
"@abp/jquery-validation-unobtrusive@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534"
integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ==
dependencies:
"@abp/jquery-validation" "~7.2.1"
"@abp/jquery-validation" "~7.2.2"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb"
integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg==
"@abp/jquery-validation@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630"
integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-validation "^1.19.3"
"@abp/jquery@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f"
integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w==
"@abp/jquery@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf"
integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
jquery "~3.6.0"
"@abp/lodash@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b"
integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA==
"@abp/lodash@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d"
integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
lodash "^4.17.21"
"@abp/luxon@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516"
integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw==
"@abp/luxon@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060"
integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346"
integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g==
"@abp/malihu-custom-scrollbar-plugin@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7"
integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25"
integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g==
"@abp/moment@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d"
integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw==
dependencies:
moment "^2.9.0"
"@abp/owl.carousel@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-7.2.1.tgz#50ff8709fc25a6774695d6a7c0b77f300aeb4dc9"
integrity sha512-fxl4ig/oJxiNX+UqFM40yjEoe8P7kvubMqmhO1GVnZWoZrNDsNVnFVhMpps47c58WPQ1iRSYJivdmxXTUG5EUw==
"@abp/owl.carousel@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/owl.carousel/-/owl.carousel-7.2.2.tgz#6ec2eb05d8c72d7debe98de0e7f8b9a3beb91d0c"
integrity sha512-uPVeB03ugsFHMg4Lnlf0szryUHu90MNItDTLdoaMFyIl68K2qmPdQI+CF5vL7Jr9r1M6Y0zGQ8eOvDu13hpQAA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
owl.carousel "^2.3.4"
"@abp/prismjs@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.1.tgz#322ea0c1368df89a8649af2ecf9660ae9c3eb12a"
integrity sha512-918o/Gev6f5tm6U0cO6S7Teygzre1x+HpzGH5WJdNx14/ZQ6wNrcsIMIjd84R6noUPVt83/eZ27N+RQtvntQLg==
"@abp/prismjs@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.2.tgz#3b8d2fa48728f55c37917e901da9d453afce1a3e"
integrity sha512-qOjcdoZ2h5o/dJ3QCSxtT3XIB4nd1qjwKSgly1fEYlXBaf/iU1JdsAX+yvAw77UfCZ6NxpAmd/tREJP9FSrQeA==
dependencies:
"@abp/clipboard" "~7.2.1"
"@abp/core" "~7.2.1"
"@abp/clipboard" "~7.2.2"
"@abp/core" "~7.2.2"
prismjs "^1.26.0"
"@abp/select2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95"
integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw==
"@abp/select2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f"
integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
select2 "^4.0.13"
"@abp/sweetalert2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3"
integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ==
"@abp/sweetalert2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376"
integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
sweetalert2 "^11.3.6"
"@abp/timeago@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857"
integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw==
"@abp/timeago@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa"
integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
timeago "^1.6.7"
"@abp/toastr@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2"
integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ==
"@abp/toastr@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965"
integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
toastr "^2.1.4"
"@abp/tui-editor@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.2.1.tgz#c123431ef3ee9c665bfcf412ada4ef73dc1ec53d"
integrity sha512-f/LzTdSE0eilE29Npm22SxN4v8beL4O58ZqKE5OHLdL8i3pJfZO5DHe9dzTxalymc9j5i0DCZSzpLKsACp5JnQ==
"@abp/tui-editor@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.2.2.tgz#1b7ad823bd56b854b727d2846142066f61a6edf8"
integrity sha512-4uuupAWEAXoLHpnk9wrmjAYiba3wYiBSLapewK3WTMZt6tLtugQ0rWS+7DNerMplR+ZwEObAN2UvNCUI6I+lBw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/prismjs" "~7.2.1"
"@abp/jquery" "~7.2.2"
"@abp/prismjs" "~7.2.2"
"@abp/utils@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5"
integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg==
"@abp/utils@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0"
integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg==
dependencies:
just-compare "^1.3.0"

5
modules/blogging/src/Volo.Blogging.Domain.Shared/Volo/Blogging/Localization/Resources/en.json

@ -73,6 +73,9 @@
"FullURL": "Full URL",
"JobTitle": "Job Title",
"PersonalWebsite": "PERSONAL WEBSITE",
"EditProfile": "Edit Profile"
"EditProfile": "Edit Profile",
"MoreFromBlog": "More From Blog",
"MoreFromUser": "More From {0}",
"BlogPosts": "Posts"
}
}

141
modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/Detail.cshtml

@ -47,6 +47,7 @@
<abp-style-bundle name="@typeof(DetailModel).FullName">
<abp-script type="@typeof(PrismjsStyleBundleContributor)" />
<abp-style src="/Pages/Blogs/Shared/Styles/blog.css" />
<abp-style src="/Pages/Blogs/Posts/detail.css" />
</abp-style-bundle>
}
@ -169,46 +170,49 @@
<a class="fw-lighter" href="/Members/@Model.Post.Writer.UserName#edit-profile">@L["EditProfile"] <i class="fas fa-edit"></i></a>
}
</div>
<hr/>
<p class="fs-3 fw-bold text-dark">More from Blog</p>
@for (var index = 0; index < Model.LatestPosts.Count && index < 5; index++)
@if (Model.LatestPosts.Count > 1)
{
if (Model.LatestPosts[index].Id != Model.Post.Id)
<hr/>
<p class="fs-3 fw-bold text-dark">@L["MoreFromBlog"]</p>
@for (var index = 0; index < Model.LatestPosts.Count && index < 5; index++)
{
var post = Model.LatestPosts[index];
if (Model.LatestPosts[index].Id != Model.Post.Id)
{
var post = Model.LatestPosts[index];
<section class="box-articles p-0">
<div class="row align-middle">
<div class="article-owner">
<div class="article-infos">
<div class="user-card pt-3">
<div class="row">
<div class="col-auto pe-1">
@if (post.Writer != null)
{
<a href="/Members/@post.Writer.UserName" aria-label="Go to user profile">
<img gravatar-email="@post.Writer.Email" default-image="Identicon" class="last-post-image" alt="User Avatar"/>
</a>
}
</div>
<div class="col">
<h5 class="last-post-name">
<a href="/Members/@post.Writer.UserName">
@(post.Writer.UserName)
</a>
</h5>
<section class="box-articles p-0">
<div class="row align-middle">
<div class="article-owner">
<div class="article-infos">
<div class="user-card pt-3">
<div class="row">
<div class="col-auto pe-1">
@if (post.Writer != null)
{
<a href="/Members/@post.Writer.UserName" aria-label="Go to user profile">
<img gravatar-email="@post.Writer.Email" default-image="Identicon" class="last-post-image" alt="User Avatar"/>
</a>
}
</div>
<div class="col">
<h5 class="last-post-name">
<a href="/Members/@post.Writer.UserName">
@(post.Writer.UserName)
</a>
</h5>
</div>
</div>
</div>
</div>
</div>
<div class="col mt-2">
<p>
<a class="last-post-title" asp-page="./Detail" asp-route-postUrl="@post.Url" asp-route-blogShortName="@Model.BlogShortName">@post.Title</a>
</p>
<div class="col mt-2">
<p>
<a class="last-post-title" asp-page="./Detail" asp-route-postUrl="@post.Url" asp-route-blogShortName="@Model.BlogShortName">@post.Title</a>
</p>
</div>
</div>
</div>
</div>
</section>
</section>
}
}
}
</div>
@ -435,50 +439,53 @@ else
}
<div class="hero articles">
<div class="hero content">
<p class="fs-3 fw-bold text-dark">More from @CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Model.Post.Writer.UserName)</p>
@for (var index = 0; index < Model.PostsList.Count; index++)
@if (Model.PostsList.Count > 1)
{
if (Model.PostsList[index].Id != Model.Post.Id)
var userName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(Model.Post.Writer.UserName);
<p class="fs-3 fw-bold text-dark">@L["MoreFromUser", userName]</p>
for (var index = 0; index < Model.PostsList.Count; index++)
{
var post = Model.PostsList[index];
<div class="post-item">
<div class="post-type-cont">
if (Model.PostsList[index].Id != Model.Post.Id)
{
var post = Model.PostsList[index];
<div class="post-item">
<div class="post-type-cont">
<a href="/members/@Model.Post.Writer.UserName" class="text-decoration-none">
<img gravatar-email="@Model.Post.Writer.Email" default-image="Identicon" class="post-member-img rounded-circle d-block"/>
</a>
<span class="post-type">
<i class="fas fa-pen-nib"></i>
@L["Blog"].Value.ToUpper()
</span>
</div>
<div class="post-detail-cont">
<div class="post-info fs-12 mb-2">
<a href="/members/@Model.Post.Writer.UserName" class="text-decoration-none">
<span class="text-dark dot">@Model.Post.Writer.UserName</span>
<img gravatar-email="@Model.Post.Writer.Email" default-image="Identicon" class="post-member-img rounded-circle d-block"/>
</a>
<span class="text-dark-200">@post.CreationTime.ToString("MMMM yyyy")</span>
<span class="post-type">
<i class="fas fa-pen-nib"></i>
@L["Blog"].Value.ToUpper()
</span>
</div>
<h2 class="post-title mt-2">
<a asp-page="./Detail" asp-route-postUrl="@post.Url">
@post.Title
</a>
</h2>
<p class="post-desc">
<a asp-page="./Detail" asp-route-postUrl="@post.Url">
@post.Description.TruncateWithPostfix(150)
</a>
<a asp-page="./Detail" asp-route-postUrl="@post.Url" class="readMore">@L["ReadMore"]</a>
</p>
</div>
<div class="post-img-cont">
<div class="post-list-span text-center post">
<img src="@post.CoverImage" class="box-articles">
<div class="post-detail-cont">
<div class="post-info fs-12 mb-2">
<a href="/members/@Model.Post.Writer.UserName" class="text-decoration-none">
<span class="text-dark dot">@Model.Post.Writer.UserName</span>
</a>
<span class="text-dark-200">@post.CreationTime.ToString("MMMM yyyy")</span>
</div>
<h2 class="post-title mt-2">
<a asp-page="./Detail" asp-route-postUrl="@post.Url">
@post.Title
</a>
</h2>
<p class="post-desc">
<a asp-page="./Detail" asp-route-postUrl="@post.Url">
@post.Description.TruncateWithPostfix(150)
</a>
<a asp-page="./Detail" asp-route-postUrl="@post.Url" class="readMore">@L["ReadMore"]</a>
</p>
</div>
<div class="post-img-cont">
<div class="post-list-span text-center post">
<img src="@post.CoverImage" class="box-articles">
</div>
</div>
</div>
</div>
}
}
}
</div>
</div>

28
modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Posts/detail.css

@ -0,0 +1,28 @@
.last-post-title{
font-size: 15px;
line-height: 20px;
font-weight: 700;
letter-spacing: 0px;
text-decoration: none;
color: black;
}
.last-post-image{
width: 30px;
height: 30px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
border-bottom-right-radius: 50%;
border-bottom-left-radius: 50%;
}
.last-post-name{
padding-right: 2px;
max-height: 16px;
padding-top: 0.5em;
padding-right: 0.5em;
}
#CopyLink{
padding: 0;
border: none;
background: none;
color: rgba(0,0,0,.6);
}

27
modules/blogging/src/Volo.Blogging.Web/Pages/Blogs/Shared/Styles/blog.css

@ -320,31 +320,4 @@ div.vs-blog {
text-decoration: none; }
div.vs-blog > .form-group {
margin: 0 !important; }
.last-post-title{
font-size: 15px;
line-height: 20px;
font-weight: 700;
letter-spacing: 0px;
text-decoration: none;
color: black;
}
.last-post-image{
width: 30px;
height: 30px;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
border-bottom-right-radius: 50%;
border-bottom-left-radius: 50%;
}
.last-post-name{
padding-right: 2px;
max-height: 16px;
padding-top: 0.5em;
padding-right: 0.5em;
}
#CopyLink{
padding: 0;
border: none;
background: none;
}

223
modules/blogging/src/Volo.Blogging.Web/Pages/Members/Index.cshtml

@ -99,99 +99,156 @@
</div>
</div>
<div class="col-md-8">
<abp-tabs>
@if (Model.Posts is not null && Model.Posts.Any())
{
<abp-tab name="all-posts" title="Blog Posts">
<div class="mt-4 pt-3">
@foreach (var post in Model.Posts)
{
<div class="post-item">
<div class="post-type-cont">
<a href="@Model.GetMemberProfileUrl(Model.User)" class="text-decoration-none">
<img gravatar-email="@Model.User.Email" default-image="Identicon" class="post-member-img rounded-circle d-block"/>
</a>
<span class="post-type">
<i class="fas fa-pen-nib"></i>
@L["Blog"].Value.ToUpper()
</span>
</div>
<div class="post-detail-cont">
<div class="post-info fs-12 mb-2">
<a href="@Model.GetMemberProfileUrl(Model.User)" class="text-decoration-none">
<span class="text-dark dot">@Model.User.UserName</span>
</a>
<span class="text-dark-200 dot">@post.CreationTime.ToString("MMMM yyyy")</span>
<span class="text-dark-200">@post.ReadCount.ToString() @L["Views"]</span>
</div>
<h3 class="post-title mb-3">
<a href="@Model.GetBlogPostUrl(post)">
@post.Title
</a>
</h3>
<p class="post-desc">
<a href="@Model.GetBlogPostUrl(post)">
@post.Description.TruncateWithPostfix(150)
</a>
<a href="@Model.GetBlogPostUrl(post)" class="readMore">@L["ReadMore"]</a>
</p>
</div>
<div class="post-img-cont">
<div class="post-list-span text-center post">
<img src="@post.CoverImage" class="box-articles">
</div>
</div>
</div>
}
</div>
</abp-tab>
}
else
{
<div class="col-md-8">
<div class="mt-5 pt-6">
<p>@L["MemberNotPublishedPostYet"]</p>
</div>
</div>
}
@if (CurrentUser.UserName == Model.User.UserName)
{
<abp-tab name="edit-profile" title="Edit Profile">
<div class="mt-4 mb-3 pt-3">
<form method="post">
<abp-row>
<abp-column size="_12" v-align="Center">
<abp-input class="form-control" asp-for="CustomUserUpdate.Name" required-symbol="false" label="@($"{L["Name"].Value} ({L["Optional"].Value})")" value="@Model.User.Name"></abp-input>
@if (CurrentUser.Id == Model.User.Id)
{
<abp-tabs>
@if (Model.Posts is not null && Model.Posts.Any())
{
<abp-tab name="all-posts" title="Posts">
<div class="mt-4 pt-3">
@foreach (var post in Model.Posts)
{
<div class="post-item">
<div class="post-type-cont">
<a href="@Model.GetMemberProfileUrl(Model.User)" class="text-decoration-none">
<img gravatar-email="@Model.User.Email" default-image="Identicon" class="post-member-img rounded-circle d-block"/>
</a>
<span class="post-type">
<i class="fas fa-pen-nib"></i>
@L["Blog"].Value.ToUpper()
</span>
</div>
<div class="post-detail-cont">
<div class="post-info fs-12 mb-2">
<a href="@Model.GetMemberProfileUrl(Model.User)" class="text-decoration-none">
<span class="text-dark dot">@Model.User.UserName</span>
</a>
<span class="text-dark-200 dot">@post.CreationTime.ToString("MMMM yyyy")</span>
<span class="text-dark-200">@post.ReadCount.ToString() @L["Views"]</span>
</div>
<h3 class="post-title mb-3">
<a href="@Model.GetBlogPostUrl(post)">
@post.Title
</a>
</h3>
<p class="post-desc">
<a href="@Model.GetBlogPostUrl(post)">
@post.Description.TruncateWithPostfix(150)
</a>
<a href="@Model.GetBlogPostUrl(post)" class="readMore">@L["ReadMore"]</a>
</p>
</div>
<div class="post-img-cont">
<div class="post-list-span text-center post">
<img src="@post.CoverImage" class="box-articles">
</div>
</div>
</div>
}
</div>
</abp-tab>
}
else
{
<div class="col-md-8">
<div class="mt-5 pt-6">
<p>@L["MemberNotPublishedPostYet"]</p>
</div>
</div>
}
<abp-tab name="edit-profile" title="Edit Profile">
<div class="mt-4 mb-3 pt-3">
<form method="post">
<abp-row>
<abp-column size="_12" v-align="Center">
<abp-input class="form-control" asp-for="CustomUserUpdate.Name" required-symbol="false" label="@($"{L["Name"].Value} ({L["Optional"].Value})")" value="@Model.User.Name"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Surname" required-symbol="false" label="@($"{L["Surname"].Value} ({L["Optional"].Value})")" value="@Model.User.Surname"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Surname" required-symbol="false" label="@($"{L["Surname"].Value} ({L["Optional"].Value})")" value="@Model.User.Surname"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.WebSite" required-symbol="false" label="@($"{L["WebSite"].Value} ({L["Optional"].Value})")" value="@Model.User.WebSite" info="@L["UpdateUserWebSiteInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.WebSite" required-symbol="false" label="@($"{L["WebSite"].Value} ({L["Optional"].Value})")" value="@Model.User.WebSite" info="@L["UpdateUserWebSiteInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Twitter" required-symbol="false" label="Twitter @($"{L["UserName"].Value} ({L["Optional"].Value})")" value="@Model.User.Twitter" info="@L["UpdateUserTwitterInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Twitter" required-symbol="false" label="Twitter @($"{L["UserName"].Value} ({L["Optional"].Value})")" value="@Model.User.Twitter" info="@L["UpdateUserTwitterInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Github" required-symbol="false" label="Github @($"{L["UserName"].Value} ({L["Optional"].Value})")" value="@Model.User.Github" info="@L["UpdateUserGithubInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Github" required-symbol="false" label="Github @($"{L["UserName"].Value} ({L["Optional"].Value})")" value="@Model.User.Github" info="@L["UpdateUserGithubInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Linkedin" required-symbol="false" label="Linkedin @($"{L["FullURL"].Value} ({L["Optional"].Value})")" value="@Model.User.Linkedin" info="@L["UpdateUserLinkedinInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Linkedin" required-symbol="false" label="Linkedin @($"{L["FullURL"].Value} ({L["Optional"].Value})")" value="@Model.User.Linkedin" info="@L["UpdateUserLinkedinInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Company" required-symbol="false" label="@($"{L["Company"].Value} ({L["Optional"].Value})")" value="@Model.User.Company" info="@L["UpdateUserCompanyInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.Company" required-symbol="false" label="@($"{L["Company"].Value} ({L["Optional"].Value})")" value="@Model.User.Company" info="@L["UpdateUserCompanyInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.JobTitle" required-symbol="false" label="@($"{L["JobTitle"].Value} ({L["Optional"].Value})")" value="@Model.User.JobTitle" info="@L["UpdateUserJobTitleInfo"].Value"></abp-input>
<abp-input class="form-control" asp-for="CustomUserUpdate.JobTitle" required-symbol="false" label="@($"{L["JobTitle"].Value} ({L["Optional"].Value})")" value="@Model.User.JobTitle" info="@L["UpdateUserJobTitleInfo"].Value"></abp-input>
<div class="mb-3">
<label class="form-label">@L["Biography"] (@L["Optional"])</label>
<textarea id="CustomUserUpdate_Biography" name="CustomUserUpdate.Biography" class="form-control " rows="7" data-val-length="The field Biography must be a string with a maximum length of 1000." data-val-length-max="1000" maxlength="1000">@Model.User.Biography</textarea>
</div>
</abp-column>
</abp-row>
<div class="d-grid gap-2">
<button id="btnSubmit" type="submit" class="btn btn-primary">@L["Submit"]</button>
<div class="mb-3">
<label class="form-label">@L["Biography"] (@L["Optional"])</label>
<textarea id="CustomUserUpdate_Biography" name="CustomUserUpdate.Biography" class="form-control " rows="7" data-val-length="The field Biography must be a string with a maximum length of 1000." data-val-length-max="1000" maxlength="1000">@Model.User.Biography</textarea>
</div>
</form>
</abp-column>
</abp-row>
<div class="d-grid gap-2">
<button id="btnSubmit" type="submit" class="btn btn-primary">@L["Submit"]</button>
</div>
</abp-tab>
}
</abp-tabs>
</form>
</div>
</abp-tab>
</abp-tabs>
}
else
{
if (Model.Posts is not null && Model.Posts.Any())
{
<h2>@L["BlogPosts"]</h2>
<div class="mt-4 pt-3">
@foreach (var post in Model.Posts)
{
<div class="post-item">
<div class="post-type-cont">
<a href="@Model.GetMemberProfileUrl(Model.User)" class="text-decoration-none">
<img gravatar-email="@Model.User.Email" default-image="Identicon" class="post-member-img rounded-circle d-block"/>
</a>
<span class="post-type">
<i class="fas fa-pen-nib"></i>
@L["Blog"].Value.ToUpper()
</span>
</div>
<div class="post-detail-cont">
<div class="post-info fs-12 mb-2">
<a href="@Model.GetMemberProfileUrl(Model.User)" class="text-decoration-none">
<span class="text-dark dot">@Model.User.UserName</span>
</a>
<span class="text-dark-200 dot">@post.CreationTime.ToString("MMMM yyyy")</span>
<span class="text-dark-200">@post.ReadCount.ToString() @L["Views"]</span>
</div>
<h3 class="post-title mb-3">
<a href="@Model.GetBlogPostUrl(post)">
@post.Title
</a>
</h3>
<p class="post-desc">
<a href="@Model.GetBlogPostUrl(post)">
@post.Description.TruncateWithPostfix(150)
</a>
<a href="@Model.GetBlogPostUrl(post)" class="readMore">@L["ReadMore"]</a>
</p>
</div>
<div class="post-img-cont">
<div class="post-list-span text-center post">
<img src="@post.CoverImage" class="box-articles">
</div>
</div>
</div>
}
</div>
}
else
{
<div class="col-md-8">
<div class="mt-5 pt-6">
<p>@L["MemberNotPublishedPostYet"]</p>
</div>
</div>
}
}
</div>
</div>
</div>

2
modules/client-simulation/demo/Volo.ClientSimulation.Demo/package.json

@ -3,6 +3,6 @@
"name": "client-simulation-web",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2"
}
}

258
modules/client-simulation/demo/Volo.ClientSimulation.Demo/yarn.lock

@ -2,39 +2,39 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8"
integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738"
integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.1"
"@abp/bootstrap" "~7.2.1"
"@abp/bootstrap-datepicker" "~7.2.1"
"@abp/bootstrap-daterangepicker" "~7.2.1"
"@abp/datatables.net-bs5" "~7.2.1"
"@abp/font-awesome" "~7.2.1"
"@abp/jquery-form" "~7.2.1"
"@abp/jquery-validation-unobtrusive" "~7.2.1"
"@abp/lodash" "~7.2.1"
"@abp/luxon" "~7.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.1"
"@abp/moment" "~7.2.1"
"@abp/select2" "~7.2.1"
"@abp/sweetalert2" "~7.2.1"
"@abp/timeago" "~7.2.1"
"@abp/toastr" "~7.2.1"
"@abp/aspnetcore.mvc.ui@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe"
integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg==
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a"
integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55"
integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.2"
"@abp/bootstrap" "~7.2.2"
"@abp/bootstrap-datepicker" "~7.2.2"
"@abp/bootstrap-daterangepicker" "~7.2.2"
"@abp/datatables.net-bs5" "~7.2.2"
"@abp/font-awesome" "~7.2.2"
"@abp/jquery-form" "~7.2.2"
"@abp/jquery-validation-unobtrusive" "~7.2.2"
"@abp/lodash" "~7.2.2"
"@abp/luxon" "~7.2.2"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.2"
"@abp/moment" "~7.2.2"
"@abp/select2" "~7.2.2"
"@abp/sweetalert2" "~7.2.2"
"@abp/timeago" "~7.2.2"
"@abp/toastr" "~7.2.2"
"@abp/aspnetcore.mvc.ui@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05"
integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -43,158 +43,158 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3"
integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw==
"@abp/bootstrap-datepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717"
integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap-daterangepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7"
integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA==
"@abp/bootstrap-daterangepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80"
integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw==
dependencies:
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318"
integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw==
"@abp/bootstrap@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793"
integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
bootstrap "^5.1.3"
"@abp/core@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898"
integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA==
"@abp/core@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67"
integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw==
dependencies:
"@abp/utils" "~7.2.1"
"@abp/utils" "~7.2.2"
"@abp/datatables.net-bs5@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed"
integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog==
"@abp/datatables.net-bs5@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd"
integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ==
dependencies:
"@abp/datatables.net" "~7.2.1"
"@abp/datatables.net" "~7.2.2"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41"
integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ==
"@abp/datatables.net@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0"
integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
datatables.net "^1.11.4"
"@abp/font-awesome@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5"
integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA==
"@abp/font-awesome@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97"
integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49"
integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ==
"@abp/jquery-form@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9"
integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9"
integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw==
"@abp/jquery-validation-unobtrusive@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534"
integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ==
dependencies:
"@abp/jquery-validation" "~7.2.1"
"@abp/jquery-validation" "~7.2.2"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb"
integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg==
"@abp/jquery-validation@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630"
integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-validation "^1.19.3"
"@abp/jquery@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f"
integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w==
"@abp/jquery@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf"
integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
jquery "~3.6.0"
"@abp/lodash@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b"
integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA==
"@abp/lodash@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d"
integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
lodash "^4.17.21"
"@abp/luxon@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516"
integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw==
"@abp/luxon@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060"
integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346"
integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g==
"@abp/malihu-custom-scrollbar-plugin@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7"
integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25"
integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g==
"@abp/moment@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d"
integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw==
dependencies:
moment "^2.9.0"
"@abp/select2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95"
integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw==
"@abp/select2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f"
integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
select2 "^4.0.13"
"@abp/sweetalert2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3"
integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ==
"@abp/sweetalert2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376"
integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
sweetalert2 "^11.3.6"
"@abp/timeago@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857"
integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw==
"@abp/timeago@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa"
integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
timeago "^1.6.7"
"@abp/toastr@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2"
integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ==
"@abp/toastr@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965"
integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
toastr "^2.1.4"
"@abp/utils@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5"
integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg==
"@abp/utils@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0"
integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg==
dependencies:
just-compare "^1.3.0"

10
modules/cms-kit/angular/package.json

@ -15,11 +15,11 @@
},
"private": true,
"dependencies": {
"@abp/ng.account": "~7.2.1",
"@abp/ng.identity": "~7.2.1",
"@abp/ng.setting-management": "~7.2.1",
"@abp/ng.tenant-management": "~7.2.1",
"@abp/ng.theme.basic": "~7.2.1",
"@abp/ng.account": "~7.2.2",
"@abp/ng.identity": "~7.2.2",
"@abp/ng.setting-management": "~7.2.2",
"@abp/ng.tenant-management": "~7.2.2",
"@abp/ng.theme.basic": "~7.2.2",
"@angular/animations": "~10.0.0",
"@angular/common": "~10.0.0",
"@angular/compiler": "~10.0.0",

4
modules/cms-kit/angular/projects/cms-kit/package.json

@ -4,8 +4,8 @@
"peerDependencies": {
"@angular/common": "^9.1.11",
"@angular/core": "^9.1.11",
"@abp/ng.core": ">=7.2.1",
"@abp/ng.theme.shared": ">=7.2.1"
"@abp/ng.core": ">=7.2.2",
"@abp/ng.theme.shared": ">=7.2.2"
},
"dependencies": {
"tslib": "^2.0.0"

2
modules/cms-kit/host/Volo.CmsKit.IdentityServer/package.json

@ -3,6 +3,6 @@
"name": "my-app-identityserver",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2"
}
}

258
modules/cms-kit/host/Volo.CmsKit.IdentityServer/yarn.lock

@ -2,39 +2,39 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8"
integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738"
integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.1"
"@abp/bootstrap" "~7.2.1"
"@abp/bootstrap-datepicker" "~7.2.1"
"@abp/bootstrap-daterangepicker" "~7.2.1"
"@abp/datatables.net-bs5" "~7.2.1"
"@abp/font-awesome" "~7.2.1"
"@abp/jquery-form" "~7.2.1"
"@abp/jquery-validation-unobtrusive" "~7.2.1"
"@abp/lodash" "~7.2.1"
"@abp/luxon" "~7.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.1"
"@abp/moment" "~7.2.1"
"@abp/select2" "~7.2.1"
"@abp/sweetalert2" "~7.2.1"
"@abp/timeago" "~7.2.1"
"@abp/toastr" "~7.2.1"
"@abp/aspnetcore.mvc.ui@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe"
integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg==
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a"
integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55"
integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.2"
"@abp/bootstrap" "~7.2.2"
"@abp/bootstrap-datepicker" "~7.2.2"
"@abp/bootstrap-daterangepicker" "~7.2.2"
"@abp/datatables.net-bs5" "~7.2.2"
"@abp/font-awesome" "~7.2.2"
"@abp/jquery-form" "~7.2.2"
"@abp/jquery-validation-unobtrusive" "~7.2.2"
"@abp/lodash" "~7.2.2"
"@abp/luxon" "~7.2.2"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.2"
"@abp/moment" "~7.2.2"
"@abp/select2" "~7.2.2"
"@abp/sweetalert2" "~7.2.2"
"@abp/timeago" "~7.2.2"
"@abp/toastr" "~7.2.2"
"@abp/aspnetcore.mvc.ui@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05"
integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -43,158 +43,158 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3"
integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw==
"@abp/bootstrap-datepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717"
integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap-daterangepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7"
integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA==
"@abp/bootstrap-daterangepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80"
integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw==
dependencies:
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318"
integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw==
"@abp/bootstrap@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793"
integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
bootstrap "^5.1.3"
"@abp/core@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898"
integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA==
"@abp/core@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67"
integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw==
dependencies:
"@abp/utils" "~7.2.1"
"@abp/utils" "~7.2.2"
"@abp/datatables.net-bs5@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed"
integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog==
"@abp/datatables.net-bs5@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd"
integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ==
dependencies:
"@abp/datatables.net" "~7.2.1"
"@abp/datatables.net" "~7.2.2"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41"
integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ==
"@abp/datatables.net@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0"
integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
datatables.net "^1.11.4"
"@abp/font-awesome@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5"
integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA==
"@abp/font-awesome@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97"
integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49"
integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ==
"@abp/jquery-form@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9"
integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9"
integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw==
"@abp/jquery-validation-unobtrusive@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534"
integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ==
dependencies:
"@abp/jquery-validation" "~7.2.1"
"@abp/jquery-validation" "~7.2.2"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb"
integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg==
"@abp/jquery-validation@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630"
integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-validation "^1.19.3"
"@abp/jquery@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f"
integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w==
"@abp/jquery@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf"
integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
jquery "~3.6.0"
"@abp/lodash@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b"
integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA==
"@abp/lodash@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d"
integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
lodash "^4.17.21"
"@abp/luxon@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516"
integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw==
"@abp/luxon@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060"
integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346"
integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g==
"@abp/malihu-custom-scrollbar-plugin@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7"
integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25"
integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g==
"@abp/moment@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d"
integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw==
dependencies:
moment "^2.9.0"
"@abp/select2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95"
integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw==
"@abp/select2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f"
integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
select2 "^4.0.13"
"@abp/sweetalert2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3"
integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ==
"@abp/sweetalert2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376"
integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
sweetalert2 "^11.3.6"
"@abp/timeago@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857"
integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw==
"@abp/timeago@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa"
integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
timeago "^1.6.7"
"@abp/toastr@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2"
integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ==
"@abp/toastr@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965"
integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
toastr "^2.1.4"
"@abp/utils@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5"
integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg==
"@abp/utils@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0"
integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg==
dependencies:
just-compare "^1.3.0"

2
modules/cms-kit/host/Volo.CmsKit.Web.Host/package.json

@ -3,6 +3,6 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2"
}
}

258
modules/cms-kit/host/Volo.CmsKit.Web.Host/yarn.lock

@ -2,39 +2,39 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8"
integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738"
integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.1"
"@abp/bootstrap" "~7.2.1"
"@abp/bootstrap-datepicker" "~7.2.1"
"@abp/bootstrap-daterangepicker" "~7.2.1"
"@abp/datatables.net-bs5" "~7.2.1"
"@abp/font-awesome" "~7.2.1"
"@abp/jquery-form" "~7.2.1"
"@abp/jquery-validation-unobtrusive" "~7.2.1"
"@abp/lodash" "~7.2.1"
"@abp/luxon" "~7.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.1"
"@abp/moment" "~7.2.1"
"@abp/select2" "~7.2.1"
"@abp/sweetalert2" "~7.2.1"
"@abp/timeago" "~7.2.1"
"@abp/toastr" "~7.2.1"
"@abp/aspnetcore.mvc.ui@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe"
integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg==
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a"
integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55"
integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.2"
"@abp/bootstrap" "~7.2.2"
"@abp/bootstrap-datepicker" "~7.2.2"
"@abp/bootstrap-daterangepicker" "~7.2.2"
"@abp/datatables.net-bs5" "~7.2.2"
"@abp/font-awesome" "~7.2.2"
"@abp/jquery-form" "~7.2.2"
"@abp/jquery-validation-unobtrusive" "~7.2.2"
"@abp/lodash" "~7.2.2"
"@abp/luxon" "~7.2.2"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.2"
"@abp/moment" "~7.2.2"
"@abp/select2" "~7.2.2"
"@abp/sweetalert2" "~7.2.2"
"@abp/timeago" "~7.2.2"
"@abp/toastr" "~7.2.2"
"@abp/aspnetcore.mvc.ui@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05"
integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -43,158 +43,158 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3"
integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw==
"@abp/bootstrap-datepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717"
integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap-daterangepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7"
integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA==
"@abp/bootstrap-daterangepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80"
integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw==
dependencies:
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318"
integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw==
"@abp/bootstrap@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793"
integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
bootstrap "^5.1.3"
"@abp/core@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898"
integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA==
"@abp/core@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67"
integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw==
dependencies:
"@abp/utils" "~7.2.1"
"@abp/utils" "~7.2.2"
"@abp/datatables.net-bs5@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed"
integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog==
"@abp/datatables.net-bs5@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd"
integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ==
dependencies:
"@abp/datatables.net" "~7.2.1"
"@abp/datatables.net" "~7.2.2"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41"
integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ==
"@abp/datatables.net@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0"
integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
datatables.net "^1.11.4"
"@abp/font-awesome@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5"
integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA==
"@abp/font-awesome@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97"
integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/jquery-form@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49"
integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ==
"@abp/jquery-form@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9"
integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9"
integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw==
"@abp/jquery-validation-unobtrusive@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534"
integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ==
dependencies:
"@abp/jquery-validation" "~7.2.1"
"@abp/jquery-validation" "~7.2.2"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb"
integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg==
"@abp/jquery-validation@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630"
integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-validation "^1.19.3"
"@abp/jquery@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f"
integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w==
"@abp/jquery@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf"
integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
jquery "~3.6.0"
"@abp/lodash@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b"
integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA==
"@abp/lodash@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d"
integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
lodash "^4.17.21"
"@abp/luxon@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516"
integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw==
"@abp/luxon@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060"
integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346"
integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g==
"@abp/malihu-custom-scrollbar-plugin@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7"
integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25"
integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g==
"@abp/moment@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d"
integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw==
dependencies:
moment "^2.9.0"
"@abp/select2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95"
integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw==
"@abp/select2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f"
integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
select2 "^4.0.13"
"@abp/sweetalert2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3"
integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ==
"@abp/sweetalert2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376"
integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
sweetalert2 "^11.3.6"
"@abp/timeago@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857"
integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw==
"@abp/timeago@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa"
integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
timeago "^1.6.7"
"@abp/toastr@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2"
integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ==
"@abp/toastr@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965"
integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
toastr "^2.1.4"
"@abp/utils@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5"
integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg==
"@abp/utils@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0"
integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg==
dependencies:
just-compare "^1.3.0"

4
modules/cms-kit/host/Volo.CmsKit.Web.Unified/package.json

@ -3,7 +3,7 @@
"name": "my-app",
"private": true,
"dependencies": {
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.1",
"@abp/cms-kit": "7.2.1"
"@abp/aspnetcore.mvc.ui.theme.basic": "~7.2.2",
"@abp/cms-kit": "7.2.2"
}
}

392
modules/cms-kit/host/Volo.CmsKit.Web.Unified/yarn.lock

@ -2,39 +2,39 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.1.tgz#34a948ef593442995bf663fd5c0d3ab4fd7390e8"
integrity sha512-AxtugI8e8n6BDklLV/z9oZQzmpF3oEhIVyr1dxv55hIBe8GcOZHA/9CqKHY/OpSwch7ka0EEPrHawCvylcNAdQ==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.1"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.1.tgz#68903cb3fafca670d603e658f20e435734e3d738"
integrity sha512-B7gGe8qAjvMsLfqxFVdvGFfMylV3NQzthXT/BMoq1MtgMdLKrrpeu6Oz3mIr68IuFlA38edqlm8Scy+iknD+Xg==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.1"
"@abp/bootstrap" "~7.2.1"
"@abp/bootstrap-datepicker" "~7.2.1"
"@abp/bootstrap-daterangepicker" "~7.2.1"
"@abp/datatables.net-bs5" "~7.2.1"
"@abp/font-awesome" "~7.2.1"
"@abp/jquery-form" "~7.2.1"
"@abp/jquery-validation-unobtrusive" "~7.2.1"
"@abp/lodash" "~7.2.1"
"@abp/luxon" "~7.2.1"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.1"
"@abp/moment" "~7.2.1"
"@abp/select2" "~7.2.1"
"@abp/sweetalert2" "~7.2.1"
"@abp/timeago" "~7.2.1"
"@abp/toastr" "~7.2.1"
"@abp/aspnetcore.mvc.ui@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.1.tgz#b4ae5dcdb90983673092dbfee93c16f21cbb21fe"
integrity sha512-edBAWEKQnUdH8jgY+QDECs3BFu0qIXbMV/AiTH9j64uo4ADQ6rgJ6Uq7xy6YtxJ0uImFkgLXDd9LYQEPvU43Bg==
"@abp/aspnetcore.mvc.ui.theme.basic@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.2.2.tgz#6cc7f3390429413ac916f0bb450025371a64e48a"
integrity sha512-6CjJ/7DGPI9q192YYuJomq9ul0lUeOvZWZM1BJ7PSV/K8rAJotIGUoLtFttv+786zxyy/sCfaJGcObg6Kij8Bg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~7.2.2"
"@abp/aspnetcore.mvc.ui.theme.shared@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.2.2.tgz#ef5feee85db6f0168bc9b2c1fb058992be6c6d55"
integrity sha512-XayukLpXEQj3VEw0YDqfCOR7QfU1nEe6aGtc9CfG9cGXMIDZFs6lxI0fbRdRR89m7T5POtDlrhr81yTkzSd1SA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~7.2.2"
"@abp/bootstrap" "~7.2.2"
"@abp/bootstrap-datepicker" "~7.2.2"
"@abp/bootstrap-daterangepicker" "~7.2.2"
"@abp/datatables.net-bs5" "~7.2.2"
"@abp/font-awesome" "~7.2.2"
"@abp/jquery-form" "~7.2.2"
"@abp/jquery-validation-unobtrusive" "~7.2.2"
"@abp/lodash" "~7.2.2"
"@abp/luxon" "~7.2.2"
"@abp/malihu-custom-scrollbar-plugin" "~7.2.2"
"@abp/moment" "~7.2.2"
"@abp/select2" "~7.2.2"
"@abp/sweetalert2" "~7.2.2"
"@abp/timeago" "~7.2.2"
"@abp/toastr" "~7.2.2"
"@abp/aspnetcore.mvc.ui@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.2.2.tgz#cc0ca317bf71fcc3c25dcc4bfd6e4521219a2b05"
integrity sha512-frRTtiGeXDuZbMxBAAPFlWMDoSHkTP0iPE2dAV7YC28W/lHrf6bJsS2CoB2dHmUjp5IB2LSQnaQuR7ihXRtx0A==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -43,257 +43,257 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.1.tgz#eca6c1138074ce222ff6c474bc51f4fbe05882c3"
integrity sha512-DUBEz8wzsWJlEfQ7CZJYemLE/wNYyY7LtWRBRjNFndS8P2xo3FP4xuh0mnovSZ3AXPy7oAAKg0zayFzf3XS4aw==
"@abp/bootstrap-datepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.2.2.tgz#2b88db99296d0905f04731b5e2d95955e6a79717"
integrity sha512-JEDv3DJprgOf8T///Wzxg/CTKapvfcvfPOeTULhs0M039Sk3xLRBv/HG9YgxexjLh8zVWKfd5T5oiWj07KMC8A==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap-daterangepicker@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.1.tgz#ad236d026c3596e71a6a2088e5332e00d62c8ff7"
integrity sha512-WF/3qQobtvizWGmycgkzHMIjHJoLYAnCsi+vJPzv+VqvGstnQOgkz/rlfcu7uAp9y5H4OWdSAbkOj9eELNfxlA==
"@abp/bootstrap-daterangepicker@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.2.2.tgz#ef4a8837ebf35ac715af06cdfa7584751447cd80"
integrity sha512-o/uFPBhNFDzGpyE9xIU4U5hqZMmeXqRSWwLdMFEt4AmOCTPXndC9eIZRpZs9fYmsNsQIA6S0kXuUxMTSOmR/Jw==
dependencies:
bootstrap-daterangepicker "^3.1.0"
"@abp/bootstrap@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.1.tgz#94d8186af2f1a1ed4d558756ffa18fd43f26e318"
integrity sha512-nU3mBK0VVgkDJqu5CBOHAD1FNvKSO6wnfX5wSB+IYDIfAV9wsmiTIMx6YO8psjMOd4flEmlKLALK6p17i79jhw==
"@abp/bootstrap@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.2.2.tgz#9fc80c6110d519d4bd53aba4f70e6c9afa227793"
integrity sha512-Eg7i+4VL62ex1C/7IaU1m8hEY4zy+QqdqeQtvb+ogKjLSM/SCE8ck+WC2749UOaso9yf7s9Eb4QMkVQ/MSMwrw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
bootstrap "^5.1.3"
"@abp/clipboard@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.1.tgz#dab262b84aa956eeb3a145461b662c5ae851b4a8"
integrity sha512-72C3QMEMMtXzjv6GTJJiILSJ1ScBidcKdahrRLlomo4TgCIEgg1+oYL3Q0uyrlB5I0mUqBaf+qYlxXue8JdRAQ==
"@abp/clipboard@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/clipboard/-/clipboard-7.2.2.tgz#e8130fc671b1c3dc85517a8f8bae1bb4c6fac64f"
integrity sha512-QiFMsawpo3e6ZV3OKe0F21vXHRv2X1WZoivQ4yYordM7QtLZG0bdftIGA1jPcKbWoSOc8wfFZszzXuceeI8U5w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
clipboard "^2.0.8"
"@abp/cms-kit.admin@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-7.2.1.tgz#ba38adfcc7ef2cafed7dd23214eee2c783d900eb"
integrity sha512-+8jiA/Ef14SOzJHjPpFo59TvLQcC+iK9G/qbfVCh+WfHhG1t/7KDFAGrzEUcYSOe5ooY/AB5mKMxUXkrLdqKpA==
"@abp/cms-kit.admin@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.admin/-/cms-kit.admin-7.2.2.tgz#e5cc50a5662716fa7700c6ce4e1fef8db869ad9f"
integrity sha512-raOfrUDKAinmMKIQlrbOoSgxWjChlrs5gX3p7bfSaIppWeWd2iZfImONeuYFzK4XaRj+5eYPIOKNI39/eMUGtg==
dependencies:
"@abp/codemirror" "~7.2.1"
"@abp/jstree" "~7.2.1"
"@abp/slugify" "~7.2.1"
"@abp/tui-editor" "~7.2.1"
"@abp/uppy" "~7.2.1"
"@abp/codemirror" "~7.2.2"
"@abp/jstree" "~7.2.2"
"@abp/slugify" "~7.2.2"
"@abp/tui-editor" "~7.2.2"
"@abp/uppy" "~7.2.2"
"@abp/cms-kit.public@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-7.2.1.tgz#1733ce3d594ded8f78e47407366f8e56018c3660"
integrity sha512-HrV3LZNRBK4v8i5KftCU9axDGtASzbTDaJLAl5hsa0bx/Kcnx8FMXZfSp67CQIDGiV6rzEU3WqlpwElLDe+LuA==
"@abp/cms-kit.public@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/cms-kit.public/-/cms-kit.public-7.2.2.tgz#41b6d21ca2261d55d538e95d0d848e0b5c60695d"
integrity sha512-j1E/DcMAe9ghZ4l3xq86Si+FqyakgoK4ftEm3z6waBOglYuALMI/YzHgoxzsicVBi065gilSIsV6EBV2Wcsr2Q==
dependencies:
"@abp/highlight.js" "~7.2.1"
"@abp/star-rating-svg" "~7.2.1"
"@abp/highlight.js" "~7.2.2"
"@abp/star-rating-svg" "~7.2.2"
"@abp/cms-kit@7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-7.2.1.tgz#b3f5438b91e9f7a44186c3d53850390cfa609b7b"
integrity sha512-BIc4Zo2qGWauWLxX+/x45rSSjDFtRfRNegOC4vYCuqYYX3fX3LKSegk938HZHda3SCFI//q1E1kPa+BudAyi8A==
"@abp/cms-kit@7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/cms-kit/-/cms-kit-7.2.2.tgz#fdabc27eb10d4f42bece0bc8ac6f3b0cfa667103"
integrity sha512-P+Kpol8yZz6P+Lno9gedadIJbbF/F7XpXEeH1L8tHcb8Hh1P3WkjwpD4X2I/jA/64VPb97FQFsmKAuypu20Tmw==
dependencies:
"@abp/cms-kit.admin" "~7.2.1"
"@abp/cms-kit.public" "~7.2.1"
"@abp/cms-kit.admin" "~7.2.2"
"@abp/cms-kit.public" "~7.2.2"
"@abp/codemirror@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-7.2.1.tgz#d934c84cdeb80fd4e0876486c2b17f34d248f8fe"
integrity sha512-OehtBFsHjz8OESO1kdt2uYbU9lllJZZSRqCe0q8rQOn7NGlc+MMr9AbvnByKdNtmYhOyWCqIghS56zcemX6QHg==
"@abp/codemirror@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/codemirror/-/codemirror-7.2.2.tgz#191b3d2d3e6c825d9ca3215811917cd676a1823d"
integrity sha512-E3ROs8936g2dbl/DF6SwC3A8O3X4QzZ+9QvPGFMAaIpMusBmoWQ0D3PrbyNqaxStmvd0pEwO4f0nY+7KOfeWQw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
codemirror "^5.65.1"
"@abp/core@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.1.tgz#5685d615482daa032ab24f49aeb7fff3f50af898"
integrity sha512-N99Ee/rbtXFaV3vdGfv6Mbj1Zav73oBGGNbzmAiQaO/g1hda6ndzSC9WzRJkJ7MaJKTPNJx1ExBNEcNMw1P2UA==
"@abp/core@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.2.2.tgz#b5d403289181094ecd92cb8d963292ba8d7afe67"
integrity sha512-4laOq4dsya/oUCbmz6JvZdiEXADFVgXdfncS//EZWJJvDVzasfO0Sf71qkj233aYQ6PmClSZarZJSottzdr8vw==
dependencies:
"@abp/utils" "~7.2.1"
"@abp/utils" "~7.2.2"
"@abp/datatables.net-bs5@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.1.tgz#0474e874729a51a7e87f2ebfa931ecd8e6fe3eed"
integrity sha512-7AvNK0mYHWcdbQJAH6/PV9yjz/FbJlVHWP7mOREd6DIkg+Q8Ihmqjn8bnJyhN2UeRMTz9EZU2nO+E9oAllYlog==
"@abp/datatables.net-bs5@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.2.2.tgz#7a8aa9173a219d28949cde69037b9d601e4c75fd"
integrity sha512-vrqcuvMksITTtRF35xk0+cPOnr+oO7nPGFN5zHVXHYf2pZP2/GqPcBo4s9arwaJ3bQ49slQV+fdugSULUFIeFQ==
dependencies:
"@abp/datatables.net" "~7.2.1"
"@abp/datatables.net" "~7.2.2"
datatables.net-bs5 "^1.11.4"
"@abp/datatables.net@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.1.tgz#30aeec4c37cc76e5c4dff78dee433c0b42599e41"
integrity sha512-AM6LonrGTOA2VyRme5rT/DcVX0TF2WxSRiM7vpTajq4A16O8yceos/XXop4QEGjGCPGbRqUuWQsIAxXRpcwYJQ==
"@abp/datatables.net@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.2.2.tgz#3c4c7cad18bd87085d6042f63a9de88908e8dfe0"
integrity sha512-8Fyqd+iUFwy5MH8RVnfwNhcFMys3JgzxBh6ipNnCSI+O+haeauC5anYpEVCZesdBqSsOnv0seL7jvgPKK6ThKQ==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
datatables.net "^1.11.4"
"@abp/font-awesome@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.1.tgz#58751a48e7a648edb075d5a424c4ed9c6448e8e5"
integrity sha512-jIYHdXtijkd0b823Gd8pDqXmJ8luA0n4NqnF6MuZtQaz95CY8o0SNc7iGSJep3Gfi9XVVUVkXqWE2Gc82uyaNA==
"@abp/font-awesome@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.2.2.tgz#24047769ba81762720e6ff0a9dc59074e7decc97"
integrity sha512-YIaNNs9PIUNKa72tI5AOlvFXZ5KB7ZkPSxtYzEQgjeAiLFSn9F6j2lxTSwEZeoa53fQ8qChnUcdLv+5b/FrpoQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
"@fortawesome/fontawesome-free" "^5.15.4"
"@abp/highlight.js@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-7.2.1.tgz#dbf3596aaa8a5a7bbf66fcf5ba3328c8d3a54f97"
integrity sha512-BLtm2EXyIJ8KQhhckg9bJYdpzg05TeVDghzhlq6C1c3HyXVGK0mifLpVLJYti+orSUn3tcx8e/xL4EtRx8CkGg==
"@abp/highlight.js@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/highlight.js/-/highlight.js-7.2.2.tgz#b3618ce617644026033e7723f3f44a470e606a72"
integrity sha512-JKkgHbgvAXj0pSQI8k9Dyj/6IMVK+uKhsxP7zk4N/+4OxRsCqysnov5JXUqldN3L5k3Ar58m2dvQzCv0Oxmk6g==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
"@highlightjs/cdn-assets" "~11.4.0"
"@abp/jquery-form@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.1.tgz#b09398cfb0abef4255a5bb1853c67ef9bfa76f49"
integrity sha512-Jqgog1AJHsCP3lLhUkCXMUzzk2XhAW9pje5dwSdKqE0/bg2OOGo1L3LKUFeEk9dWuMVRkrLRmfdcGRt1SRb4rQ==
"@abp/jquery-form@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.2.2.tgz#f9f8d75072f8090b03c89471afb9565cb2fc55b9"
integrity sha512-OHj3w4eUwivDymETk7RHxAE25pOOB/IiHB1/w/3axDgAdWaWERWnXnCZFfi+QV+8dmrXySzUecicOxXoL12NEA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.1.tgz#a62f85c7226d71588d1aa732739b3434c43f40e9"
integrity sha512-pEleVw7js8SpIRX73U5ccrfvc0H7Lxfa761wH9WglQOgC0Z1dAkJWbqr/6zKuUi3sVECYgFK8RcVm8/oPRGMzw==
"@abp/jquery-validation-unobtrusive@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.2.2.tgz#0dbb9fa0970d65cd56447fdc17828fd3f4147534"
integrity sha512-3CUdINe6BXzPuDP08lWDdYON+mBVHHP37Xyt8AKqD3Qk0TMoBy2QYz4pdxS2ifn97p1f51J/jP701vNJtNVtMQ==
dependencies:
"@abp/jquery-validation" "~7.2.1"
"@abp/jquery-validation" "~7.2.2"
jquery-validation-unobtrusive "^3.2.12"
"@abp/jquery-validation@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.1.tgz#e8506f0513d26ae3550cb9410ce500e20065d9cb"
integrity sha512-QuCQV2UhKUXwOgYfwKMdu959lWSTOPR83wDTbuTAYd9nsOpCHmhDMApVT0hv44Jv+/ZmE360mkpogzkb0abxLg==
"@abp/jquery-validation@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.2.2.tgz#9683b25e83ac3dec1a7533c25455c42e73d81630"
integrity sha512-78NL177q1G1AOzUOhqmeAKc/3X/TgK1p+0SqWob9G83ADs7ZK5DV/uR73fs35KNYcnQI9aPwl2XzJ4hPHUZ+Qw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jquery-validation "^1.19.3"
"@abp/jquery@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.1.tgz#4ac9cd9ba4710f8dccaa145c17cef00e147efe6f"
integrity sha512-W2qE9LP6BCp1bdOMiup4MuB/R7Plj9se+1Sct1EeF1AnpNXv4IvVr5aGEy0/gKeeHvOrHB4wKIXcBhURFSAY1w==
"@abp/jquery@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.2.2.tgz#b4034ab5e193ad111ed8a2c36df97b97ecc13aaf"
integrity sha512-Uz75FDBU8R0cu5ATeudy6Ho7Fv1pg2brcQlJ+kYUxXoRmeX2j5H8+vhQGkNpMmtg7xyb4BS7tZyEtuDS9mlvpQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
jquery "~3.6.0"
"@abp/jstree@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-7.2.1.tgz#b862ec532fa1ccbe5bdb761ddc97b0bed0263c26"
integrity sha512-cw8m8XcrlQ1gOc0cQFzbqh1SdLc9u0RZdQ+niY70raBzqCPr3rk2Jf/qeagIcnCFfTjzT3tUtnB4m5j1HNcuZQ==
"@abp/jstree@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/jstree/-/jstree-7.2.2.tgz#944e401dc1885676fb2b056a6fc7ffe3e05b1ecc"
integrity sha512-x7BP8sxFAwYeipEhjzMdGbFS9m7RsMjGEZqnRORCFnk6+IGiy72YiUGNE8xJ1ScTbsnjT1mxtgaYcrB3KnX+mw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
jstree "^3.3.12"
"@abp/lodash@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.1.tgz#36d60374a9fc2130c1f7bd264902d78221fa3b5b"
integrity sha512-XFZrxijDLhKqtL4LL3x9C/TvnJs/MIjmNwJ7+Ieg26fo2IFqYg2+hIieCUqGzn66IBwUAoRR0Cqa66erxijDlA==
"@abp/lodash@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.2.2.tgz#c391d06726800807df4f25e51a28f3e6cb03de5d"
integrity sha512-Mbe/wdqfBoHbf19dEUy2IMLek7P6a2PWQsVygoyb5phb+hGm0Qy5h4g0IhFiRRWChXnjRQeDnZINdXHl8RMzuQ==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
lodash "^4.17.21"
"@abp/luxon@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.1.tgz#eb31dd7242be766f995954924e0127f2b58e4516"
integrity sha512-lSzulfTa4RPOcp80wmDUQFN9BatTASgYnYfu9RK9U/Fi2nV5KvqzUvRkB/XTitupLaoTJfV5h8Cpf47QMgiLSw==
"@abp/luxon@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.2.2.tgz#0d99a16bf34288deeae835753e6bab92efd6f060"
integrity sha512-rnz4ljwArJCwf7riFDJrIjZW0bJUXlodeM7IGWCD0Mj7r5t0n+FX9ngcJfKf+zC7ICYMaPCsz+QeUX6ycTZdOw==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
luxon "^2.3.0"
"@abp/malihu-custom-scrollbar-plugin@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.1.tgz#d3b8aa15774a34f0abe704e416b00d8be76d3346"
integrity sha512-xqsjMQJez25mFwNRTUdHTQl78tYJ9+NEmEYLjpo+qRbs2hBExZQO67gTuO6TKvPRBCVgMiIcdpuegtoFhZLl5g==
"@abp/malihu-custom-scrollbar-plugin@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.2.2.tgz#a843d02519ff193633c41845312c9f7741606eb7"
integrity sha512-kw9364TJuc/z7uCKZsmHDyv7gsdR8jxp+jTvkubemLuFH6fHgbL5Q77jWp5AcjI03lskaWK0Rnjsa9Ahqt/chA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/moment@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.1.tgz#07bcaeb408b0025f2e8c2a7b259f5f27e05f8d25"
integrity sha512-L7EvEKEyl9RsPnSVbPwL3QC3xcKqkaLtZo75wTws2o5hXHs4f4mkADdnpfjCYFFZ+H0vMYjxzKYNI8rHm/ZU0g==
"@abp/moment@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.2.2.tgz#353495c3ad2d393b3a50fbe24a731a569f6f001d"
integrity sha512-bdlfPH2uKxv1JdxGi4xAKOsN+LFQk7yV28WuAm05c16GH4YnOVHTUXZXEMNSt1cRz0GQesWwqpDrtZrKyLkptw==
dependencies:
moment "^2.9.0"
"@abp/prismjs@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.1.tgz#322ea0c1368df89a8649af2ecf9660ae9c3eb12a"
integrity sha512-918o/Gev6f5tm6U0cO6S7Teygzre1x+HpzGH5WJdNx14/ZQ6wNrcsIMIjd84R6noUPVt83/eZ27N+RQtvntQLg==
"@abp/prismjs@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/prismjs/-/prismjs-7.2.2.tgz#3b8d2fa48728f55c37917e901da9d453afce1a3e"
integrity sha512-qOjcdoZ2h5o/dJ3QCSxtT3XIB4nd1qjwKSgly1fEYlXBaf/iU1JdsAX+yvAw77UfCZ6NxpAmd/tREJP9FSrQeA==
dependencies:
"@abp/clipboard" "~7.2.1"
"@abp/core" "~7.2.1"
"@abp/clipboard" "~7.2.2"
"@abp/core" "~7.2.2"
prismjs "^1.26.0"
"@abp/select2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.1.tgz#c2d9494d09395691792ede04bf3d7173ebd35a95"
integrity sha512-AW1ylrPQv+WeT3HdQQqy09uvxSeWPzxLhVEylL+HIGFn3TwMCVo2DtgnxSYde4WCpDMRlYzkWlUBX5y9UzhArw==
"@abp/select2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.2.2.tgz#f5e2fbc377c7a482b59e9f177c3a9f1f73d7f94f"
integrity sha512-mZqcNZ7Te7JzePUFKowjZWO90TH/9rlvkm4tx5q8PMYkV9Pk/aGbw5Gi7nGJHLEcy1g1fI0N5aL/UQzckeC99w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
select2 "^4.0.13"
"@abp/slugify@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-7.2.1.tgz#a70aa53b144fc1f3aa83a5e41427104a059c3b69"
integrity sha512-9MaaZapW2b6eKfhNAK8DCnugUBP0smx8k8+2JPkdqAv6NWrc883a8RrPknQP2Tl9ssyUnfszaxWVMcD5tr4Bbg==
"@abp/slugify@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/slugify/-/slugify-7.2.2.tgz#56e53f92e81c004b97c1f31d3a63db0df07b2eb5"
integrity sha512-9+/I5pxUFDXq6HXCkR2+wFVWQ47L10fhJXpyVrmU5JbNIo4XvetouynElKkwFkIwXbgk8j5dBTg9tSxHIbRqSA==
dependencies:
slugify "^1.6.5"
"@abp/star-rating-svg@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-7.2.1.tgz#16f77d020520dd55a2e8b293a119558f52d0d229"
integrity sha512-blrh0K8GoWJrIlmJ/AG6K0H4og89T+y0JGRWAEvJ7LxJs8CnYy1vgW/YJEpcktb1/goSx+O1jD7OsfgvDv48+w==
"@abp/star-rating-svg@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/star-rating-svg/-/star-rating-svg-7.2.2.tgz#c80abfe48f80af2f904f7d5cb42fad113a28ec13"
integrity sha512-Ye1JSu6j4wFRKsbMs5n+gz9+zJmkilPWl3HGWJeanI/JY69HBLH5IlI65L6HEc8QNrdCLRCMSNj+S96BpF4XpA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
star-rating-svg "^3.5.0"
"@abp/sweetalert2@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.1.tgz#ab11b3ef48ca55687a8afb0f8fca0b9e696d10a3"
integrity sha512-qGMQE7I3bnCN0xwliBP+y+1m5nx7mOYc2yuTozNLdNpmNgT0TAkjyvufn99JQBPoFju+VjMEjS5R005RbvLuVQ==
"@abp/sweetalert2@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.2.2.tgz#9cd0fc631dcf9989a2189217b7b5f3437cb4f376"
integrity sha512-KMBaMyk9iUqzceGfxR1dGx+wZylOz4f7mN9Owj7Jn9MjMGZoFUoyJ96PFD4rLy2m/8g3Jn70dbmnynpF1P8x+w==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
sweetalert2 "^11.3.6"
"@abp/timeago@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.1.tgz#0fad3c1d7b0678ca63a47f9ba6f5702a162f6857"
integrity sha512-1M6WWQ/kPdndMPhgJ5/I22NjxLgmHM4b4sLaKATIH5D4EM7aii22RiM5cSBVAKoJZjJ8S3R28g78zS01xKrSnw==
"@abp/timeago@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.2.2.tgz#a0fac76f78d679892c0a5653d3a68044529245fa"
integrity sha512-3qLRrDQ1qC+E8YbsPiFxGf7ZzIlbKS3ObE2ixULKoarjJE8yDnHV2vfkSX1kYGsiN50yasUUG88U+JHLbhyx8w==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
timeago "^1.6.7"
"@abp/toastr@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.1.tgz#6ddc793e0a66e2b1f9dd192530ad46aacfd60cb2"
integrity sha512-BkLohyVJxLx0aJ6WJ2iBRV8y20JWfgoRCpzGUCcAhAp+BBF9FVhVxxZo0loFjprFprvLjJK91Z0bErJW6BWvFQ==
"@abp/toastr@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.2.2.tgz#30e8039ceeff66bdd7c438c3c6cd583deeb71965"
integrity sha512-Jmmkcv2B3fdGbDJaBXeqRtctQXx8cTEb+PgyqtVRG/M0Wy7hhbMYn0U+t3KflGpZzH+AN5ReAdNbjXpM3wgFmA==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/jquery" "~7.2.2"
toastr "^2.1.4"
"@abp/tui-editor@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.2.1.tgz#c123431ef3ee9c665bfcf412ada4ef73dc1ec53d"
integrity sha512-f/LzTdSE0eilE29Npm22SxN4v8beL4O58ZqKE5OHLdL8i3pJfZO5DHe9dzTxalymc9j5i0DCZSzpLKsACp5JnQ==
"@abp/tui-editor@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/tui-editor/-/tui-editor-7.2.2.tgz#1b7ad823bd56b854b727d2846142066f61a6edf8"
integrity sha512-4uuupAWEAXoLHpnk9wrmjAYiba3wYiBSLapewK3WTMZt6tLtugQ0rWS+7DNerMplR+ZwEObAN2UvNCUI6I+lBw==
dependencies:
"@abp/jquery" "~7.2.1"
"@abp/prismjs" "~7.2.1"
"@abp/jquery" "~7.2.2"
"@abp/prismjs" "~7.2.2"
"@abp/uppy@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-7.2.1.tgz#9484e871d2b4c6f2367519b724727dddacf62a35"
integrity sha512-7qZUl7qoS/Ibqqb5Kf3pjDigaXrSzAzHvrfOgm9VJJPJ03w1fCmcH2hxvkWP5mkLeNbzCmWBL+u7ZpXIK/PxyA==
"@abp/uppy@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/uppy/-/uppy-7.2.2.tgz#64fd4b79212bfb879d2b646ff0b5dc3059cf5733"
integrity sha512-rFNrUfET4Skr/rwoztAve3yjEA9JB4sPUD1ClH8uTTmV7YeNTnDlWe/8q+dhwf9+j1GAYBWdP41BALLG8Is3RA==
dependencies:
"@abp/core" "~7.2.1"
"@abp/core" "~7.2.2"
uppy "^1.16.1"
"@abp/utils@~7.2.1":
version "7.2.1"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.1.tgz#a0d5a6de02cb1b68d096399bb03771a8bb9b03b5"
integrity sha512-1QAdnFH9RD03w5mqNCz2G4mCuEPRgAJNLvFAEu9RTkL6EhOsCCQSG5mzA4cTWNDvVlNcUF8uyroXmlUvuzpYHg==
"@abp/utils@~7.2.2":
version "7.2.2"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.2.2.tgz#6054baa822d52f08452e8405c7a391aaedee7de0"
integrity sha512-VB9ijoPvB2tHInc1XrcvTvEzYANh+V1BliyScNTG9tr09q2pvn5jHp8Jixtu7GewCy8dh7cyueqhbnuozxedjg==
dependencies:
just-compare "^1.3.0"

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogDto.cs

@ -5,7 +5,7 @@ using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Admin.Blogs;
[Serializable]
public class BlogDto : EntityDto<Guid>, IHasConcurrencyStamp
public class BlogDto : ExtensibleEntityDto<Guid>, IHasConcurrencyStamp
{
public string Name { get; set; }

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostDto.cs

@ -7,7 +7,7 @@ using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs;
[Serializable]
public class BlogPostDto : EntityDto<Guid>, IHasCreationTime, IHasModificationTime, IHasConcurrencyStamp
public class BlogPostDto : ExtensibleEntityDto<Guid>, IHasCreationTime, IHasModificationTime, IHasConcurrencyStamp
{
public Guid BlogId { get; set; }

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/BlogPostListDto.cs

@ -6,7 +6,7 @@ using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs;
[Serializable]
public class BlogPostListDto : EntityDto<Guid>, IHasCreationTime, IHasModificationTime
public class BlogPostListDto : ExtensibleEntityDto<Guid>, IHasCreationTime, IHasModificationTime
{
public Guid BlogId { get; set; }

4
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogDto.cs

@ -1,12 +1,14 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Application.Dtos;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs;
[Serializable]
public class CreateBlogDto
public class CreateBlogDto : ExtensibleObject
{
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))]

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/CreateBlogPostDto.cs

@ -1,12 +1,13 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs;
[Serializable]
public class CreateBlogPostDto
public class CreateBlogPostDto: ExtensibleObject
{
[Required]
public Guid BlogId { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogDto.cs

@ -1,13 +1,14 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs;
[Serializable]
public class UpdateBlogDto : IHasConcurrencyStamp
public class UpdateBlogDto : ExtensibleObject, IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))]

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Blogs/UpdateBlogPostDto.cs

@ -1,13 +1,14 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Blogs;
namespace Volo.CmsKit.Admin.Blogs;
[Serializable]
public class UpdateBlogPostDto : IHasConcurrencyStamp
public class UpdateBlogPostDto : ExtensibleObject, IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(BlogPostConsts), nameof(BlogPostConsts.MaxTitleLength))]

77
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/CmsKitAdminApplicationContractsModule.cs

@ -1,11 +1,84 @@
using Volo.Abp.Modularity;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectExtending.Modularity;
using Volo.Abp.Threading;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Admin.Comments;
using Volo.CmsKit.Admin.GlobalResources;
using Volo.CmsKit.Admin.MediaDescriptors;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.Admin.Pages;
using Volo.CmsKit.Admin.Tags;
namespace Volo.CmsKit.Admin;
[DependsOn(
typeof(CmsKitCommonApplicationContractsModule)
)]
)]
public class CmsKitAdminApplicationContractsModule : AbpModule
{
private readonly static OneTimeRunner OneTimeRunner = new OneTimeRunner();
}
public override void PostConfigureServices(ServiceConfigurationContext context)
{
OneTimeRunner.Run(() =>
{
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.Blog,
getApiTypes: new[] { typeof(BlogDto) },
createApiTypes: new[] { typeof(CreateBlogDto) },
updateApiTypes: new[] { typeof(UpdateBlogDto) }
);
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.BlogPost,
getApiTypes: new[] { typeof(BlogPostDto), typeof(BlogPostListDto) },
createApiTypes: new[] { typeof(CreateBlogPostDto) },
updateApiTypes: new[] { typeof(UpdateBlogPostDto) }
);
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.Comment,
getApiTypes: new[] { typeof(CommentDto), typeof(CommentWithAuthorDto) }
);
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.GlobalResource,
getApiTypes: new[] { typeof(GlobalResourcesDto) },
updateApiTypes: new[] { typeof(GlobalResourcesUpdateDto) }
);
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.MediaDescriptor,
getApiTypes: new[] { typeof(MediaDescriptorDto) }
);
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.MenuItem,
createApiTypes: new[] { typeof(MenuCreateInput) , typeof(MenuItemCreateInput)},
updateApiTypes: new[] { typeof(MenuUpdateInput) , typeof(MenuItemUpdateInput)}
);
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.Page,
getApiTypes: new[] { typeof(PageDto) },
createApiTypes: new[] { typeof(CreatePageInputDto) },
updateApiTypes: new[] { typeof(UpdatePageInputDto) }
);
ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToApi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.Tag,
createApiTypes: new[] { typeof(TagCreateDto) },
updateApiTypes: new[] { typeof(TagUpdateDto) }
);
});
}
}

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CmsUserDto.cs

@ -1,9 +1,10 @@
using System;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.Comments;
[Serializable]
public class CmsUserDto
public class CmsUserDto : ExtensibleObject
{
public Guid Id { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentDto.cs

@ -1,9 +1,10 @@
using System;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.Comments;
[Serializable]
public class CommentDto
public class CommentDto : ExtensibleObject
{
public Guid Id { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Comments/CommentWithAuthorDto.cs

@ -1,9 +1,10 @@
using System;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.Comments;
[Serializable]
public class CommentWithAuthorDto
public class CommentWithAuthorDto : ExtensibleObject
{
public Guid Id { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesDto.cs

@ -1,9 +1,10 @@
using System;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.GlobalResources;
[Serializable]
public class GlobalResourcesDto
public class GlobalResourcesDto : ExtensibleObject
{
public string StyleContent { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/GlobalResources/GlobalResourcesUpdateDto.cs

@ -1,9 +1,10 @@
using System;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.GlobalResources;
[Serializable]
public class GlobalResourcesUpdateDto
public class GlobalResourcesUpdateDto : ExtensibleObject
{
public string Style { get; set; }

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/MediaDescriptors/MediaDescriptorDto.cs

@ -4,7 +4,7 @@ using Volo.Abp.Application.Dtos;
namespace Volo.CmsKit.Admin.MediaDescriptors;
[Serializable]
public class MediaDescriptorDto : EntityDto<Guid>
public class MediaDescriptorDto : ExtensibleEntityDto<Guid>
{
public string Name { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuCreateInput.cs

@ -3,11 +3,12 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.Menus;
[Serializable]
public class MenuCreateInput
public class MenuCreateInput : ExtensibleObject
{
public string Name { get; set; }
}

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemCreateInput.cs

@ -1,10 +1,11 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.Menus;
[Serializable]
public class MenuItemCreateInput
public class MenuItemCreateInput : ExtensibleObject
{
public Guid? ParentId { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuItemUpdateInput.cs

@ -1,11 +1,12 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.Menus;
[Serializable]
public class MenuItemUpdateInput : IHasConcurrencyStamp
public class MenuItemUpdateInput : ExtensibleObject, IHasConcurrencyStamp
{
[Required]
public string DisplayName { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Menus/MenuUpdateInput.cs

@ -3,11 +3,12 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.ObjectExtending;
namespace Volo.CmsKit.Admin.Menus;
[Serializable]
public class MenuUpdateInput
public class MenuUpdateInput : ExtensibleObject
{
public string Name { get; set; }
}

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/CreatePageInputDto.cs

@ -1,12 +1,13 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Pages;
namespace Volo.CmsKit.Admin.Pages;
[Serializable]
public class CreatePageInputDto
public class CreatePageInputDto: ExtensibleObject
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))]

2
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/PageDto.cs

@ -5,7 +5,7 @@ using Volo.Abp.Domain.Entities;
namespace Volo.CmsKit.Admin.Pages;
[Serializable]
public class PageDto : AuditedEntityDto<Guid>, IHasConcurrencyStamp
public class PageDto : ExtensibleAuditedEntityDto<Guid>, IHasConcurrencyStamp
{
public string Title { get; set; }

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Pages/UpdatePageInputDto.cs

@ -1,13 +1,14 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Pages;
namespace Volo.CmsKit.Admin.Pages;
[Serializable]
public class UpdatePageInputDto : IHasConcurrencyStamp
public class UpdatePageInputDto : ExtensibleObject, IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))]

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagCreateDto.cs

@ -1,12 +1,13 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.Admin.Tags;
[Serializable]
public class TagCreateDto
public class TagCreateDto : ExtensibleObject
{
[Required]
[DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxEntityTypeLength))]

3
modules/cms-kit/src/Volo.CmsKit.Admin.Application.Contracts/Volo/CmsKit/Admin/Tags/TagUpdateDto.cs

@ -1,13 +1,14 @@
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.Admin.Tags;
[Serializable]
public class TagUpdateDto : IHasConcurrencyStamp
public class TagUpdateDto : ExtensibleObject, IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(TagConsts), nameof(TagConsts.MaxNameLength))]

6
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogAdminAppService.cs

@ -6,6 +6,7 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.ObjectExtending;
using Volo.CmsKit.Blogs;
using Volo.CmsKit.Features;
using Volo.CmsKit.GlobalFeatures;
@ -56,7 +57,8 @@ public class BlogAdminAppService : CmsKitAdminAppServiceBase, IBlogAdminAppServi
public virtual async Task<BlogDto> CreateAsync(CreateBlogDto input)
{
var blog = await BlogManager.CreateAsync(input.Name, input.Slug);
input.MapExtraPropertiesTo(blog);
await BlogRepository.InsertAsync(blog, autoSave: true);
await BlogFeatureManager.SetDefaultsAsync(blog.Id);
@ -70,7 +72,7 @@ public class BlogAdminAppService : CmsKitAdminAppServiceBase, IBlogAdminAppServi
var blog = await BlogRepository.GetAsync(id);
blog = await BlogManager.UpdateAsync(blog, input.Name, input.Slug);
input.MapExtraPropertiesTo(blog);
blog.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
await BlogRepository.UpdateAsync(blog);

6
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Blogs/BlogPostAdminAppService.cs

@ -6,6 +6,7 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Users;
using Volo.CmsKit.Admin.MediaDescriptors;
using Volo.CmsKit.Blogs;
@ -59,7 +60,7 @@ public class BlogPostAdminAppService : CmsKitAppServiceBase, IBlogPostAdminAppSe
input.Content,
input.CoverImageMediaId
);
input.MapExtraPropertiesTo(blogPost);
await BlogPostRepository.InsertAsync(blogPost);
return ObjectMapper.Map<BlogPost, BlogPostDto>(blogPost);
@ -85,7 +86,8 @@ public class BlogPostAdminAppService : CmsKitAppServiceBase, IBlogPostAdminAppSe
{
await BlogPostManager.SetSlugUrlAsync(blogPost, input.Slug);
}
input.MapExtraPropertiesTo(blogPost);
await BlogPostRepository.UpdateAsync(blogPost);
return ObjectMapper.Map<BlogPost, BlogPostDto>(blogPost);

26
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/CmsKitAdminApplicationAutoMapperProfile.cs

@ -20,29 +20,31 @@ public class CmsKitAdminApplicationAutoMapperProfile : Profile
{
public CmsKitAdminApplicationAutoMapperProfile()
{
CreateMap<CmsUser, Comments.CmsUserDto>();
CreateMap<CmsUser, Comments.CmsUserDto>().MapExtraProperties();
CreateMap<Comment, CommentDto>();
CreateMap<Comment, CommentDto>().MapExtraProperties();
CreateMap<Comment, CommentWithAuthorDto>()
.Ignore(x => x.Author);
.Ignore(x => x.Author)
.MapExtraProperties();
CreateMap<Page, PageDto>();
CreateMap<Page, PageDto>().MapExtraProperties();
CreateMap<Page, PageLookupDto>();
CreateMap<BlogPost, BlogPostDto>(MemberList.Destination);
CreateMap<BlogPost, BlogPostDto>(MemberList.Destination).MapExtraProperties();
CreateMap<BlogPost, BlogPostListDto>()
.Ignore(d => d.BlogName);
CreateMap<CreateBlogPostDto, BlogPost>(MemberList.Source);
CreateMap<UpdateBlogPostDto, BlogPost>(MemberList.Source);
.Ignore(d => d.BlogName)
.MapExtraProperties();
CreateMap<CreateBlogPostDto, BlogPost>(MemberList.Source).MapExtraProperties();
CreateMap<UpdateBlogPostDto, BlogPost>(MemberList.Source).MapExtraProperties();
CreateMap<Blog, BlogDto>();
CreateMap<Blog, BlogDto>().MapExtraProperties();
CreateMap<TagEntityTypeDefiniton, TagDefinitionDto>(MemberList.Destination);
CreateMap<Tag, TagDto>();
CreateMap<Tag, TagDto>().MapExtraProperties();
CreateMap<MediaDescriptor, MediaDescriptorDto>();
CreateMap<MediaDescriptor, MediaDescriptorDto>().MapExtraProperties();
CreateMap<MenuItem, MenuItemDto>();
CreateMap<MenuItem, MenuItemDto>().MapExtraProperties();
}
}

5
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Menus/MenuItemAdminAppService.cs

@ -6,6 +6,7 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.ObjectExtending;
using Volo.CmsKit.Features;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Menus;
@ -69,7 +70,7 @@ public class MenuItemAdminAppService : CmsKitAdminAppServiceBase, IMenuItemAdmin
{
MenuManager.SetPageUrl(menuItem, await PageRepository.GetAsync(input.PageId.Value));
}
input.MapExtraPropertiesTo(menuItem);
await MenuItemRepository.InsertAsync(menuItem);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);
@ -96,7 +97,7 @@ public class MenuItemAdminAppService : CmsKitAdminAppServiceBase, IMenuItemAdmin
menuItem.ElementId = input.ElementId;
menuItem.CssClass = input.CssClass;
menuItem.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
input.MapExtraPropertiesTo(menuItem);
await MenuItemRepository.UpdateAsync(menuItem);
return ObjectMapper.Map<MenuItem, MenuItemDto>(menuItem);

4
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Pages/PageAdminAppService.cs

@ -7,6 +7,7 @@ using Volo.Abp.Caching;
using Volo.Abp.Data;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.ObjectExtending;
using Volo.CmsKit.Features;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Pages;
@ -62,7 +63,7 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
public virtual async Task<PageDto> CreateAsync(CreatePageInputDto input)
{
var page = await PageManager.CreateAsync(input.Title, input.Slug, input.Content, input.Script, input.Style);
input.MapExtraPropertiesTo(page);
await PageRepository.InsertAsync(page);
return ObjectMapper.Map<Page, PageDto>(page);
@ -84,6 +85,7 @@ public class PageAdminAppService : CmsKitAdminAppServiceBase, IPageAdminAppServi
page.SetScript(input.Script);
page.SetStyle(input.Style);
page.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
input.MapExtraPropertiesTo(page);
await PageRepository.UpdateAsync(page);

4
modules/cms-kit/src/Volo.CmsKit.Admin.Application/Volo/CmsKit/Admin/Tags/TagAdminAppService.cs

@ -8,6 +8,7 @@ using Volo.Abp.Application.Dtos;
using Volo.Abp.Data;
using Volo.Abp.Features;
using Volo.Abp.GlobalFeatures;
using Volo.Abp.ObjectExtending;
using Volo.CmsKit.Features;
using Volo.CmsKit.GlobalFeatures;
using Volo.CmsKit.Permissions;
@ -44,7 +45,7 @@ public class TagAdminAppService : CmsKitAppServiceBase, ITagAdminAppService
GuidGenerator.Create(),
input.EntityType,
input.Name);
input.MapExtraPropertiesTo(tag);
await Repository.InsertAsync(tag);
return ObjectMapper.Map<Tag, TagDto>(tag);
@ -56,6 +57,7 @@ public class TagAdminAppService : CmsKitAppServiceBase, ITagAdminAppService
var tag = await TagManager.UpdateAsync(
id,
input.Name);
input.MapExtraPropertiesTo(tag);
tag.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);

56
modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebAutoMapperProfile.cs

@ -0,0 +1,56 @@
using AutoMapper;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.Admin.Pages;
using Volo.CmsKit.Admin.Tags;
using Volo.CmsKit.Menus;
using Volo.CmsKit.Tags;
namespace Volo.CmsKit.Admin.Web;
public class CmsKitAdminWebAutoMapperProfile : Profile
{
public CmsKitAdminWebAutoMapperProfile()
{
CreateBlogPostMappings();
CreateBlogMappings();
CreateMenuMappings();
CreatePageMappings();
CreateTagMappings();
}
protected virtual void CreateBlogPostMappings()
{
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.BlogPosts.CreateModel.CreateBlogPostViewModel, CreateBlogPostDto>().MapExtraProperties();
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.BlogPosts.UpdateModel.UpdateBlogPostViewModel, UpdateBlogPostDto>().MapExtraProperties();
CreateMap<BlogPostDto, Volo.CmsKit.Admin.Web.Pages.CmsKit.BlogPosts.UpdateModel.UpdateBlogPostViewModel>().MapExtraProperties();
}
protected virtual void CreateBlogMappings()
{
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs.CreateModalModel.CreateBlogViewModel, CreateBlogDto>().MapExtraProperties();
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs.UpdateModalModel.UpdateBlogViewModel, UpdateBlogDto>().MapExtraProperties();
CreateMap<BlogDto, Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs.UpdateModalModel.UpdateBlogViewModel>().MapExtraProperties();
}
protected virtual void CreateMenuMappings()
{
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems.CreateModalModel.MenuItemCreateViewModel, MenuItemCreateInput>().MapExtraProperties();
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems.UpdateModalModel.MenuItemUpdateViewModel, MenuItemUpdateInput>().MapExtraProperties();
CreateMap<MenuItemDto, Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems.UpdateModalModel.MenuItemUpdateViewModel>().MapExtraProperties();
}
protected virtual void CreatePageMappings()
{
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.Pages.CreateModel.CreatePageViewModel, CreatePageInputDto>().MapExtraProperties();
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.Pages.UpdateModel.UpdatePageViewModel, UpdatePageInputDto>().MapExtraProperties();
CreateMap<PageDto, Volo.CmsKit.Admin.Web.Pages.CmsKit.Pages.UpdateModel.UpdatePageViewModel>().MapExtraProperties();
}
protected virtual void CreateTagMappings()
{
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.Tags.CreateModalModel.TagCreateViewModel, TagCreateDto>().MapExtraProperties();
CreateMap<Volo.CmsKit.Admin.Web.Pages.CmsKit.Tags.EditModalModel.TagEditViewModel, TagUpdateDto>().MapExtraProperties();
CreateMap<TagDto, Volo.CmsKit.Admin.Web.Pages.CmsKit.Tags.EditModalModel.TagEditViewModel>().MapExtraProperties();
}
}

52
modules/cms-kit/src/Volo.CmsKit.Admin.Web/CmsKitAdminWebModule.cs

@ -7,6 +7,9 @@ using Volo.Abp.AutoMapper;
using Volo.Abp.Http.ProxyScripting.Generators.JQuery;
using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.ObjectExtending;
using Volo.Abp.ObjectExtending.Modularity;
using Volo.Abp.Threading;
using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileSystem;
using Volo.CmsKit.Admin.MediaDescriptors;
@ -23,6 +26,8 @@ namespace Volo.CmsKit.Admin.Web;
)]
public class CmsKitAdminWebModule : AbpModule
{
private readonly static OneTimeRunner OneTimeRunner = new OneTimeRunner();
public override void PreConfigureServices(ServiceConfigurationContext context)
{
context.Services.PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options =>
@ -169,4 +174,51 @@ public class CmsKitAdminWebModule : AbpModule
options.ConventionalControllers.FormBodyBindingIgnoredTypes.Add(typeof(CreateMediaInputWithStream));
});
}
public override void PostConfigureServices(ServiceConfigurationContext context)
{
OneTimeRunner.Run(() =>
{
ModuleExtensionConfigurationHelper
.ApplyEntityConfigurationToUi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.Blog,
createFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs.CreateModalModel.CreateBlogViewModel) },
editFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs.UpdateModalModel.UpdateBlogViewModel) }
);
ModuleExtensionConfigurationHelper
.ApplyEntityConfigurationToUi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.BlogPost,
createFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.BlogPosts.CreateModel.CreateBlogPostViewModel) },
editFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.BlogPosts.UpdateModel.UpdateBlogPostViewModel) }
);
ModuleExtensionConfigurationHelper
.ApplyEntityConfigurationToUi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.MenuItem,
createFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems.CreateModalModel.MenuItemCreateViewModel) },
editFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems.UpdateModalModel.MenuItemUpdateViewModel) }
);
ModuleExtensionConfigurationHelper
.ApplyEntityConfigurationToUi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.Page,
createFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.Pages.CreateModel.CreatePageViewModel) },
editFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.Pages.UpdateModel.UpdatePageViewModel) }
);
ModuleExtensionConfigurationHelper
.ApplyEntityConfigurationToUi(
CmsKitModuleExtensionConsts.ModuleName,
CmsKitModuleExtensionConsts.EntityNames.Tag,
createFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.Tags.CreateModalModel.TagCreateViewModel) },
editFormTypes: new[] { typeof(Volo.CmsKit.Admin.Web.Pages.CmsKit.Tags.EditModalModel.TagEditViewModel) }
);
});
}
}

48
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml

@ -2,6 +2,12 @@
@using System.Globalization
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
@using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.TuiEditor
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.Pages.Shared.Components.AbpPageToolbar
@using Volo.CmsKit.Admin.Web.Pages
@ -11,10 +17,14 @@
@using Volo.CmsKit.Blogs
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Uppy
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Slugify
@using Volo.Abp.Data
@using Volo.Abp.Localization
@using Volo.Abp.ObjectExtending
@using Volo.CmsKit.Permissions
@inherits CmsKitAdminPageBase
@inject IAuthorizationService AuthorizationService
@inject IStringLocalizerFactory StringLocalizerFactory
@model CreateModel
@{
@ -54,7 +64,7 @@
<input type="file" id="BlogPostCoverImage" class="form-control" />
</div>
<abp-dynamic-form abp-model="ViewModel" asp-page="/CmsKit/BlogPosts/Create" id="form-blog-post-create">
<form asp-page="/CmsKit/BlogPosts/Create" id="form-blog-post-create">
<div class="mb-3">
<label class="form-label" asp-for="ViewModel.BlogId"></label>
<select asp-for="ViewModel.BlogId" id="BlogSelectionSelect" class="form-control"></select>
@ -64,8 +74,8 @@
<abp-input asp-for="ViewModel.Title" />
<abp-input asp-for="ViewModel.Slug" />
<abp-form-content />
<abp-input asp-for="ViewModel.ShortDescription" />
<div class="content-editor cms-kit-editor"
id="ContentEditor"
@ -73,7 +83,37 @@
data-language="@(CultureInfo.CurrentUICulture.TwoLetterISOLanguageName)">
</div>
<input type="hidden" id="ViewModel_Status" name="ViewModel.Status" value="" class="form-control ">
</abp-dynamic-form>
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<CreateModel.CreateBlogPostViewModel>())
{
if (!propertyInfo.Name.EndsWith("_Text"))
{
if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty())
{
if (propertyInfo.Type.IsEnum)
{
Model.ViewModel.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type);
}
<abp-select asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
autocomplete-api-url="@propertyInfo.Lookup.Url"
autocomplete-selected-item-name="@Model.ViewModel.GetProperty(propertyInfo.Name+"_Text")"
autocomplete-selected-item-value="@Model.ViewModel.GetProperty(propertyInfo.Name)"
autocomplete-filter-param-name="@propertyInfo.Lookup.FilterParamName"
autocomplete-items-property-name="@propertyInfo.Lookup.ResultListPropertyName"
autocomplete-display-property-name="@propertyInfo.Lookup.DisplayPropertyName"
autocomplete-value-property-name="@propertyInfo.Lookup.ValuePropertyName"></abp-select>
}
else
{
<abp-input type="@propertyInfo.GetInputType()"
asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
asp-format="@propertyInfo.GetInputFormatOrNull()"
value="@propertyInfo.GetInputValueOrNull(Model.ViewModel.GetProperty(propertyInfo.Name))" />
}
}
}
</form>
<div id="blog-post-tags-wrapper">

4
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Create.cshtml.cs

@ -8,6 +8,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Blogs;
@ -25,6 +26,7 @@ public class CreateModel : CmsKitAdminPageModel
IBlogPostAdminAppService blogPostAdminAppService)
{
BlogPostAdminAppService = blogPostAdminAppService;
ViewModel = new CreateBlogPostViewModel();
}
public async Task<IActionResult> OnPostAsync()
@ -49,7 +51,7 @@ public class CreateModel : CmsKitAdminPageModel
}
[AutoMap(typeof(CreateBlogPostDto), ReverseMap = true)]
public class CreateBlogPostViewModel
public class CreateBlogPostViewModel : ExtensibleObject
{
[Required]
[DynamicFormIgnore]

50
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml

@ -1,6 +1,12 @@
@page "{Id}"
@using System.Globalization
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
@using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.TuiEditor
@using Volo.CmsKit.Blogs
@using Volo.CmsKit.Admin.Web.Pages
@ -10,6 +16,10 @@
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Tags.Components.TagEditor
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Uppy
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Slugify
@using Volo.Abp.Data
@using Volo.Abp.Localization
@using Volo.Abp.ObjectExtending
@inject IStringLocalizerFactory StringLocalizerFactory
@inherits CmsKitAdminPageBase
@ -62,14 +72,15 @@
<input type="file" id="BlogPostCoverImage" class="form-control"/>
</div>
<abp-dynamic-form abp-model="ViewModel" asp-page="/CmsKit/BlogPosts/Update" id="form-blog-post-update">
<form asp-page="/CmsKit/BlogPosts/Update" id="form-blog-post-update">
<abp-input asp-for="Id" />
<abp-input asp-for="ViewModel.ConcurrencyStamp" hidden />
<abp-input asp-for="ViewModel.Title" />
<abp-input asp-for="ViewModel.Slug" />
<abp-form-content />
<abp-input asp-for="ViewModel.ShortDescription" />
<div class="content-editor cms-kit-editor"
id="ContentEditor"
@ -77,7 +88,38 @@
data-language="@(CultureInfo.CurrentUICulture.TwoLetterISOLanguageName)">
</div>
</abp-dynamic-form>
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<UpdateModel.UpdateBlogPostViewModel>())
{
if (!propertyInfo.Name.EndsWith("_Text"))
{
if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty())
{
if (propertyInfo.Type.IsEnum)
{
Model.ViewModel.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type);
}
<abp-select asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
autocomplete-api-url="@propertyInfo.Lookup.Url"
autocomplete-selected-item-name="@Model.ViewModel.GetProperty(propertyInfo.Name+"_Text")"
autocomplete-selected-item-value="@Model.ViewModel.GetProperty(propertyInfo.Name)"
autocomplete-filter-param-name="@propertyInfo.Lookup.FilterParamName"
autocomplete-items-property-name="@propertyInfo.Lookup.ResultListPropertyName"
autocomplete-display-property-name="@propertyInfo.Lookup.DisplayPropertyName"
autocomplete-value-property-name="@propertyInfo.Lookup.ValuePropertyName"></abp-select>
}
else
{
<abp-input type="@propertyInfo.GetInputType()"
asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
asp-format="@propertyInfo.GetInputFormatOrNull()"
value="@propertyInfo.GetInputValueOrNull(Model.ViewModel.GetProperty(propertyInfo.Name))" />
}
}
}
</form>
@if (Model.TagsFeature?.IsEnabled == true)
{

3
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/BlogPosts/Update.cshtml.cs

@ -9,6 +9,7 @@ using System.Text;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Blogs;
@ -57,7 +58,7 @@ public class UpdateModel : CmsKitAdminPageModel
[AutoMap(typeof(BlogPostDto))]
[AutoMap(typeof(UpdateBlogPostDto), ReverseMap = true)]
public class UpdateBlogPostViewModel : IHasConcurrencyStamp
public class UpdateBlogPostViewModel : ExtensibleObject, IHasConcurrencyStamp
{
[DynamicMaxLength(typeof(BlogPostConsts), nameof(BlogPostConsts.MaxTitleLength))]
[Required]

48
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml

@ -1,8 +1,15 @@
@page
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@using Volo.Abp.Data
@using Volo.Abp.Localization
@using Volo.Abp.ObjectExtending
@inject IStringLocalizerFactory StringLocalizerFactory
@inherits CmsKitAdminPageBase
@ -12,12 +19,45 @@
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" asp-page="/CmsKit/Blogs/CreateModal">
<form asp-page="/CmsKit/Blogs/CreateModal">
<abp-modal>
<abp-modal-header title="@L["New"].Value"></abp-modal-header>
<abp-modal-body>
<abp-form-content />
<abp-input asp-for="ViewModel.Name" />
<abp-input asp-for="ViewModel.Slug" />
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<CreateModalModel.CreateBlogViewModel>())
{
if (!propertyInfo.Name.EndsWith("_Text"))
{
if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty())
{
if (propertyInfo.Type.IsEnum)
{
Model.ViewModel.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type);
}
<abp-select asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
autocomplete-api-url="@propertyInfo.Lookup.Url"
autocomplete-selected-item-name="@Model.ViewModel.GetProperty(propertyInfo.Name+"_Text")"
autocomplete-selected-item-value="@Model.ViewModel.GetProperty(propertyInfo.Name)"
autocomplete-filter-param-name="@propertyInfo.Lookup.FilterParamName"
autocomplete-items-property-name="@propertyInfo.Lookup.ResultListPropertyName"
autocomplete-display-property-name="@propertyInfo.Lookup.DisplayPropertyName"
autocomplete-value-property-name="@propertyInfo.Lookup.ValuePropertyName"></abp-select>
}
else
{
<abp-input type="@propertyInfo.GetInputType()"
asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
asp-format="@propertyInfo.GetInputFormatOrNull()"
value="@propertyInfo.GetInputValueOrNull(Model.ViewModel.GetProperty(propertyInfo.Name))" />
}
}
}
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel | AbpModalButtons.Save)"></abp-modal-footer>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>
</form>

9
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/CreateModal.cshtml.cs

@ -2,6 +2,7 @@
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Blogs;
@ -18,9 +19,10 @@ public class CreateModalModel : CmsKitAdminPageModel
public CreateModalModel(IBlogAdminAppService blogAdminAppService)
{
BlogAdminAppService = blogAdminAppService;
ViewModel = new CreateBlogViewModel();
}
public async Task<IActionResult> OnPostAsync()
public virtual async Task<IActionResult> OnPostAsync()
{
var dto = ObjectMapper.Map<CreateBlogViewModel, CreateBlogDto>(ViewModel);
@ -28,9 +30,8 @@ public class CreateModalModel : CmsKitAdminPageModel
return NoContent();
}
[AutoMap(typeof(CreateBlogDto), ReverseMap = true)]
public class CreateBlogViewModel
public class CreateBlogViewModel : ExtensibleObject
{
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))]

51
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml

@ -1,8 +1,14 @@
@page
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Blogs
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@using Volo.Abp.Data
@using Volo.Abp.Localization
@using Volo.Abp.ObjectExtending
@inject IStringLocalizerFactory StringLocalizerFactory
@inherits CmsKitAdminPageBase
@model UpdateModalModel
@ -11,13 +17,48 @@
Layout = null;
}
<abp-dynamic-form abp-model="ViewModel" asp-page="/CmsKit/Blogs/UpdateModal">
<form asp-page="/CmsKit/Blogs/UpdateModal">
<abp-modal>
<abp-modal-header title="@L["Edit"].Value"></abp-modal-header>
<abp-modal-body>
<abp-input asp-for="Id" />
<abp-form-content />
<abp-input asp-for="Id" hidden />
<abp-input asp-for="ViewModel.ConcurrencyStamp" hidden />
<abp-input asp-for="ViewModel.Name" />
<abp-input asp-for="ViewModel.Slug" />
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<UpdateModalModel.UpdateBlogViewModel>())
{
if (!propertyInfo.Name.EndsWith("_Text"))
{
if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty())
{
if (propertyInfo.Type.IsEnum)
{
Model.ViewModel.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type);
}
<abp-select asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
autocomplete-api-url="@propertyInfo.Lookup.Url"
autocomplete-selected-item-name="@Model.ViewModel.GetProperty(propertyInfo.Name+"_Text")"
autocomplete-selected-item-value="@Model.ViewModel.GetProperty(propertyInfo.Name)"
autocomplete-filter-param-name="@propertyInfo.Lookup.FilterParamName"
autocomplete-items-property-name="@propertyInfo.Lookup.ResultListPropertyName"
autocomplete-display-property-name="@propertyInfo.Lookup.DisplayPropertyName"
autocomplete-value-property-name="@propertyInfo.Lookup.ValuePropertyName"></abp-select>
}
else
{
<abp-input type="@propertyInfo.GetInputType()"
asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
asp-format="@propertyInfo.GetInputFormatOrNull()"
value="@propertyInfo.GetInputValueOrNull(Model.ViewModel.GetProperty(propertyInfo.Name))" />
}
}
}
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel|AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>
</abp-dynamic-form>
</form>

7
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Blogs/UpdateModal.cshtml.cs

@ -4,6 +4,7 @@ using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Blogs;
using Volo.CmsKit.Blogs;
@ -41,10 +42,8 @@ public class UpdateModalModel : CmsKitAdminPageModel
return NoContent();
}
[AutoMap(typeof(BlogDto))]
[AutoMap(typeof(UpdateBlogDto), ReverseMap = true)]
public class UpdateBlogViewModel : IHasConcurrencyStamp
public class UpdateBlogViewModel : ExtensibleObject, IHasConcurrencyStamp
{
[Required]
[DynamicMaxLength(typeof(BlogConsts), nameof(BlogConsts.MaxNameLength))]

40
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml

@ -1,9 +1,16 @@
@page
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab
@using Volo.Abp.Data
@using Volo.Abp.Localization
@using Volo.Abp.ObjectExtending
@inject IStringLocalizerFactory StringLocalizerFactory
@inherits CmsKitAdminPageBase
@model CreateModalModel
@ -42,6 +49,37 @@
<abp-input asp-for="ViewModel.Target"/>
<abp-input asp-for="ViewModel.ElementId"/>
<abp-input asp-for="ViewModel.CssClass"/>
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<CreateModalModel.MenuItemCreateViewModel>())
{
if (!propertyInfo.Name.EndsWith("_Text"))
{
if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty())
{
if (propertyInfo.Type.IsEnum)
{
Model.ViewModel.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type);
}
<abp-select asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
autocomplete-api-url="@propertyInfo.Lookup.Url"
autocomplete-selected-item-name="@Model.ViewModel.GetProperty(propertyInfo.Name+"_Text")"
autocomplete-selected-item-value="@Model.ViewModel.GetProperty(propertyInfo.Name)"
autocomplete-filter-param-name="@propertyInfo.Lookup.FilterParamName"
autocomplete-items-property-name="@propertyInfo.Lookup.ResultListPropertyName"
autocomplete-display-property-name="@propertyInfo.Lookup.DisplayPropertyName"
autocomplete-value-property-name="@propertyInfo.Lookup.ValuePropertyName"></abp-select>
}
else
{
<abp-input type="@propertyInfo.GetInputType()"
asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
asp-format="@propertyInfo.GetInputFormatOrNull()"
value="@propertyInfo.GetInputValueOrNull(Model.ViewModel.GetProperty(propertyInfo.Name))" />
}
}
}
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel | AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>

3
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/CreateModal.cshtml.cs

@ -7,6 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
using Volo.Abp.ObjectExtending;
using Volo.CmsKit.Admin.Menus;
namespace Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems;
@ -41,7 +42,7 @@ public class CreateModalModel : CmsKitAdminPageModel
}
[AutoMap(typeof(MenuItemCreateInput), ReverseMap = true)]
public class MenuItemCreateViewModel
public class MenuItemCreateViewModel : ExtensibleObject
{
[HiddenInput]
public Guid? ParentId { get; set; }

40
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml

@ -1,9 +1,16 @@
@page
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Menus.MenuItems
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Modal
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab
@using Volo.Abp.Data
@using Volo.Abp.Localization
@using Volo.Abp.ObjectExtending
@inject IStringLocalizerFactory StringLocalizerFactory
@inherits CmsKitAdminPageBase
@model UpdateModalModel
@ -41,6 +48,37 @@
<abp-input asp-for="ViewModel.Target"/>
<abp-input asp-for="ViewModel.ElementId"/>
<abp-input asp-for="ViewModel.CssClass"/>
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<UpdateModalModel.MenuItemUpdateViewModel>())
{
if (!propertyInfo.Name.EndsWith("_Text"))
{
if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty())
{
if (propertyInfo.Type.IsEnum)
{
Model.ViewModel.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type);
}
<abp-select asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
autocomplete-api-url="@propertyInfo.Lookup.Url"
autocomplete-selected-item-name="@Model.ViewModel.GetProperty(propertyInfo.Name+"_Text")"
autocomplete-selected-item-value="@Model.ViewModel.GetProperty(propertyInfo.Name)"
autocomplete-filter-param-name="@propertyInfo.Lookup.FilterParamName"
autocomplete-items-property-name="@propertyInfo.Lookup.ResultListPropertyName"
autocomplete-display-property-name="@propertyInfo.Lookup.DisplayPropertyName"
autocomplete-value-property-name="@propertyInfo.Lookup.ValuePropertyName"></abp-select>
}
else
{
<abp-input type="@propertyInfo.GetInputType()"
asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
asp-format="@propertyInfo.GetInputFormatOrNull()"
value="@propertyInfo.GetInputValueOrNull(Model.ViewModel.GetProperty(propertyInfo.Name))" />
}
}
}
</abp-modal-body>
<abp-modal-footer buttons="@(AbpModalButtons.Cancel | AbpModalButtons.Save)"></abp-modal-footer>
</abp-modal>

3
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Menus/MenuItems/UpdateModal.cshtml.cs

@ -5,6 +5,7 @@ using AutoMapper;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Volo.Abp.Domain.Entities;
using Volo.Abp.ObjectExtending;
using Volo.CmsKit.Admin.Menus;
using Volo.CmsKit.Menus;
@ -44,7 +45,7 @@ public class UpdateModalModel : CmsKitAdminPageModel
[AutoMap(typeof(MenuItemDto))]
[AutoMap(typeof(MenuItemUpdateInput), ReverseMap = true)]
public class MenuItemUpdateViewModel : IHasConcurrencyStamp
public class MenuItemUpdateViewModel : ExtensibleObject, IHasConcurrencyStamp
{
[Required]
public string DisplayName { get; set; }

43
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml

@ -1,12 +1,24 @@
@page
@using System.Globalization
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using Microsoft.Extensions.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Button
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Card
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
@using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Tab
@using Volo.Abp.AspNetCore.Mvc.UI.Bundling.TagHelpers
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Codemirror
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.TuiEditor
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Uppy
@using Volo.CmsKit.Admin.Web.Pages
@using Volo.CmsKit.Admin.Web.Menus
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.Slugify
@using Volo.Abp.Data
@using Volo.Abp.Localization
@using Volo.Abp.ObjectExtending
@using Volo.CmsKit.Admin.Web.Pages.CmsKit.Pages
@inject IStringLocalizerFactory StringLocalizerFactory
@inherits CmsKitAdminPageBase
@ -70,6 +82,37 @@
</abp-tab>
</abp-tabs>
@foreach (var propertyInfo in ObjectExtensionManager.Instance.GetProperties<CreateModel.CreatePageViewModel>())
{
if (!propertyInfo.Name.EndsWith("_Text"))
{
if (propertyInfo.Type.IsEnum || !propertyInfo.Lookup.Url.IsNullOrEmpty())
{
if (propertyInfo.Type.IsEnum)
{
Model.ViewModel.ExtraProperties.ToEnum(propertyInfo.Name, propertyInfo.Type);
}
<abp-select asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
autocomplete-api-url="@propertyInfo.Lookup.Url"
autocomplete-selected-item-name="@Model.ViewModel.GetProperty(propertyInfo.Name+"_Text")"
autocomplete-selected-item-value="@Model.ViewModel.GetProperty(propertyInfo.Name)"
autocomplete-filter-param-name="@propertyInfo.Lookup.FilterParamName"
autocomplete-items-property-name="@propertyInfo.Lookup.ResultListPropertyName"
autocomplete-display-property-name="@propertyInfo.Lookup.DisplayPropertyName"
autocomplete-value-property-name="@propertyInfo.Lookup.ValuePropertyName"></abp-select>
}
else
{
<abp-input type="@propertyInfo.GetInputType()"
asp-for="ViewModel.ExtraProperties[propertyInfo.Name]"
label="@propertyInfo.GetLocalizedDisplayName(StringLocalizerFactory)"
asp-format="@propertyInfo.GetInputFormatOrNull()"
value="@propertyInfo.GetInputValueOrNull(Model.ViewModel.GetProperty(propertyInfo.Name))" />
}
}
}
</form>
</abp-card-body>
<abp-card-footer>

4
modules/cms-kit/src/Volo.CmsKit.Admin.Web/Pages/CmsKit/Pages/Create.cshtml.cs

@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Mvc;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Validation;
using Volo.CmsKit.Admin.Pages;
using Volo.CmsKit.Pages;
@ -19,6 +20,7 @@ public class CreateModel : CmsKitAdminPageModel
public CreateModel(IPageAdminAppService pageAdminAppService)
{
this.pageAdminAppService = pageAdminAppService;
ViewModel = new CreatePageViewModel();
}
public async Task<IActionResult> OnPostAsync()
@ -31,7 +33,7 @@ public class CreateModel : CmsKitAdminPageModel
}
[AutoMap(typeof(CreatePageInputDto), ReverseMap = true)]
public class CreatePageViewModel
public class CreatePageViewModel : ExtensibleObject
{
[Required]
[DynamicMaxLength(typeof(PageConsts), nameof(PageConsts.MaxTitleLength))]

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save